当前位置: 首页 > article >正文

关于机器学习当中的决策树算法解析

一、决策树简介

1. 什么是决策树?

决策树是一种基于树结构的机器学习算法,用于解决分类和回归问题。在决策树中,每个节点表示一个特征,每个边代表一个决策规则,最终的叶节点代表输出。一句话进行概括就是就是通过一系列的问题,帮助你找到答案的过程。

二、决策树的核心概念

1. 节点类型

  • 根节点:包含整个数据集。
  • 内部节点:表示一个特征的测试条件。
  • 叶节点:代表最终的决策结果或预测值。

2. 决策树的构建过程

  • 选择最优特征:使用信息增益、基尼指数等准则选择最佳特征进行分裂。
  • 分裂:根据选定的特征,将数据集分割成子集。
  • 递归构建:对每个子集重复上述过程,直到满足停止条件(如所有样本属于同一类)。

3. 特征选择准则

  • 信息增益:ID3算法采用信息增益作为划分标准。
  • 基尼指数:CART算法使用基尼指数来选择最佳特征。
  • 信息增益比:C4.5算法为了克服ID3偏向多值特征的问题,引入了信息增益比。

三、Python代码实现决策树

老规矩: 记得检查环境,忘记的可以看我之前的文章环境安装

我们在windows环境的话安装语句一般都使用

pip  install 要安装的库名

1. 首先导入必要的库

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, plot_tree

2. 准备数据结构

# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target

3. 划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

4. 创建决策树模型

# 创建决策树分类器
model = DecisionTreeClassifier(random_state=42)

5. 拟合模型

# 训练模型
model.fit(X_train, y_train)

6. 可视化决策树

plt.figure(figsize=(10, 8))
plot_tree(model, feature_names=iris.feature_names, class_names=iris.target_names, filled=True)
plt.show()

7. 模型评估

from sklearn.metrics import accuracy_score
y_pred = model.predict(X_test)
print("准确率:", accuracy_score(y_test, y_pred))

四、分析决策树的优缺点

优点

  • 易于理解和解释:规则类似人类的逻辑思考过程。
  • 可处理混合数据类型:数值型和分类型数据都能处理。
  • 无需大量参数调整:相比其他复杂算法,决策树需要的参数较少。

缺点

  • 容易过拟合:尤其是在树结构很复杂的时候。
  • 受噪音影响较大:数据中的噪音可能导致模型不稳定。

http://www.kler.cn/a/454779.html

相关文章:

  • UGUI简单动画制作
  • Windows Powershell实战指南(未完成)
  • XDP (eXpress Data Path):在操作系统内核中实现快速、可编程包处理
  • Leetcode打卡:查询数组中元素出现的位置
  • Elasticsearch:normalizer
  • 【乐企文件生成工程】根据特定要素动态选择需要生成的发票板式文件实现
  • 每日算法一练:剑指offer——动态规划(1)
  • 41.欠采样技术下变频不能用与跨两个nyquist的情况下
  • 探索 DC-SDK:强大的 3D 地图开发框架
  • 第1章 R语言中的并行处理入门
  • C语言技巧之有条件的累加
  • bash shell脚本while循环
  • leetcode 3159. 查询数组中元素的出现位置 中等
  • RDFS—RDF模型属性扩展解析
  • 分布式事务入门 一
  • 一种寻路的应用
  • 期权懂|期权入门知识:如何选择期权合约?
  • 1.1、Python3基础语法
  • GitLab的安装与卸载
  • 解决 vue3 中 echarts图表在el-dialog中显示问题
  • leetcode hot100 腐烂的橘子
  • zabbix5.0版本(安装部署+添加服务器+拆分数据库)
  • 产品初探Devops!以及AI如何赋能Devops?
  • 3-Linux 用户管理入门
  • 路由器刷机TP-Link tp-link-WDR566 路由器升级宽带速度
  • VMware安装CentOS 7