【机器学习】决策树

2ca64309b1fd8c25a30c2c2152f7fb9b.png

一、原理

典型的决策树

b58783b51fefd408806f8312efaa520c.png

分类树与回归树

cb452a99af330f110c512cba2c077a86.png

如何用训练样本建立决策树

ac2bf41f3d5380855a59aaa57ae49475.png

分裂规则  不纯度

d806a2b49f1838625338394646de92ca.png

各种不纯度指标定义

b5d96428ba153e4ad9d57d559d4c76de.png

对于数值型特征和分类型特征分别详述确定分裂阈值和分裂特征的过程

eb33d8178fdbb1c6c0c380f8586db4b8.png

对于分类树和回归树如何确定叶子节点的值

47ac95aa4ba4989402fe6bec4a5b0ae6.png

对于样本特征向量属性缺失情况如何处理

7f69243c101b397d40c5803355ff03f3.png

对于属性缺失情况,使用替代分裂规则,如何确定替代分裂特征和替代分裂阈值

41abde4e9b35ad3d028b3eb1f1d5a535.png

决策树的剪枝算法

6207ceb5b742f2a42d003a94689e69f3.png

代价-复杂度剪枝算法

67f284369e841911c736430093f82db7.png

决策树输出特征向量的重要性

1c8c32bd7f20a984b4001b447c58a420.png

二、示例代码

e5393948851bac938562f475f5d1df3c.png

# 导入必要的库
import numpy as np  # 用于处理数值计算
import matplotlib.pyplot as plt  # 用于绘图
from sklearn import datasets  # 用于加载数据集
from sklearn import tree  # 用于构建决策树
#import matplotlib  # 用于设置绘图风格    import matplotlib
#%matplotlib inline  # 在 Jupyter Notebook 中直接显示图表# 定义函数:生成所有测试样本点
def make_meshgrid(x, y, h=.02):# 计算x轴和y轴的范围x_min, x_max = x.min() - 1, x.max() + 1y_min, y_max = y.min() - 1, y.max() + 1# 生成网格数据xx, yy = np.meshgrid(np.arange(x_min, x_max, h),np.arange(y_min, y_max, h))# 返回网格数据return xx, yy# 定义函数:对测试样本进行预测,并显示
def plot_test_results(ax, clf, xx, yy, **params):# 对网格数据进行预测Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])# 将预测结果转换为二维数组Z = Z.reshape(xx.shape)# 使用指定参数绘制预测结果ax.contourf(xx, yy, Z, **params)# 载入iris数据集
iris = datasets.load_iris()# 只使用前面两个特征
X = iris.data[:, :2]# 样本标签值
y = iris.target# 创建并训练决策树
clf = tree.DecisionTreeClassifier()
clf.fit(X, y)# 设置标题
title = ('DecisionTreeClassifier')# 创建图形并调整子图间距
fig, ax = plt.subplots(figsize=(5, 5))
plt.subplots_adjust(wspace=0.4, hspace=0.4)# 获取特征1和特征2的值
X0, X1 = X[:, 0], X[:, 1]# 生成所有测试样本点
xx, yy = make_meshgrid(X0, X1)# 显示测试样本的分类结果
plot_test_results(ax, clf, xx, yy, cmap=plt.cm.coolwarm, alpha=0.8)# 显示训练样本
""" X0 和 X1:这些是表示训练数据点 x 和 y 坐标的数组。
c=y:此参数根据 y 数组中的相应标签指定每个数据点的颜色。cmap=plt.cm.coolwarm 参数设置用于将标签映射到颜色的颜色映射。
s=20:此参数指定每个数据点的大小,单位为平方像素。
edgecolors='k':此参数指定每个数据点边缘的颜色。在本例中,颜色设置为黑色 ('k')。"""
ax.scatter(X0, X1, c=y, cmap=plt.cm.coolwarm, s=20, edgecolors='k')# 设置x轴和y轴的范围
ax.set_xlim(xx.min(), xx.max())
ax.set_ylim(yy.min(), yy.max())# 设置x轴和y轴的标签
ax.set_xlabel('x1')
ax.set_ylabel('x2')# 隐藏x轴和y轴的刻度
ax.set_xticks(())
ax.set_yticks(())# 设置标题
ax.set_title(title)# 显示图形
plt.show()

fe27c34660578f3d8f2b6e84147c62af.png

三、决策树的应用场景

33b7668028a5f7a1b3d56c03fcdeec73.png

参考网址:

https://zhuanlan.zhihu.com/p/30296061 谢小娇包教包会决策树之决策树剪枝 - 知乎 (zhihu.com)

https://blog.csdn.net/moxibingdao/article/details/118617855 关于决策树,你一定要知道的知识点!-CSDN博客

https://zhuanlan.zhihu.com/p/93936294 模型算法基础——决策树剪枝算法(三) - 知乎 (zhihu.com)

https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier sklearn.tree.DecisionTreeClassifier — scikit-learn 1.3.2 documentation 

https://sklearn.apachecn.org/ 【布客】sklearn 中文翻译 (apachecn.org)

The End

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/175916.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android自定义桌面应用

android自定义桌面应用 这篇文章主要讲下自定义桌面应用. 效果主要是调用packageManager来获取当前所有的程序,并在自定义桌面程序中展示,并支持跳转. 主要的代码如下: 1.manifest声明 <activity android:name".MainActivity"><intent-filter><ac…

【uniapp】微信运行报错TypeError_ Cannot read property ‘FormData‘ of undefined

文章目录 一、报错详情&#xff1a;二、解决&#xff1a; 一、报错详情&#xff1a; 二、解决&#xff1a; npm install axios0.27.2 #或者 npm install axios1.3.4

<JavaEE> Java中线程有多少种状态(State)?状态之间的关系有什么关系?

目录 一、系统内核中的线程状态 二、Java中的线程状态 一、系统内核中的线程状态 状态说明就绪状态线程已经准备就绪&#xff0c;随时可以接受CPU的调度。阻塞状态线程处于阻塞等待&#xff0c;暂时无法在CPU中执行。 二、Java中的线程状态 相比于系统内核&#xff0c;Java…

SELinux零知识学习三十六、SELinux策略语言之角色和用户(7)

接前一篇文章:SELinux零知识学习三十五、SELinux策略语言之角色和用户(6) 三、SELinux策略语言之角色和用户 SELinux提供了一种依赖于类型强制(类型增强,TE)的基于角色的访问控制(Role-Based Access Control),角色用于组域类型和限制域类型与用户之间的关系,SELinux…

Doris-数据导入 (二十三)

导入&#xff08;Load&#xff09;功能就是将用户的原始数据导入到 Doris 中。导入成功后&#xff0c;用户即可通过Mysql 客户端查询数据。为适配不同的数据导入需求&#xff0c;Doris 系统提供了 6 种不同的导入方式。每种导入方式支持不同的数据源&#xff0c;存在不同的使用…

内测分发平台是否支持应用的微服务化部署

内测分发平台的微服务化部署支持是现代应用开发和部署的一个重要特性。首先我们得知道什么是微服务化部署都有哪些关键功能&#xff0c;如何实施微服务化的部署。下文以我自己理解总结了几点。 图片来源:news.gulufenfa.com 微服务是一种基于独立运行的小型服务来构建应用程序…

ILSVRC2012数据集处理

ILSVRC2012数据集处理 解压图像处理标签和图像 解压图像 先解压 tar -xvf ILSVRC2012_img_train.tar 解压之后其实还是1000个tar压缩包&#xff08;对应1000个类别&#xff09;&#xff0c;需要再次解压&#xff0c;解压脚本unzip.sh如下&#xff08;PS&#xff1a;可能需要自…

智能优化算法应用:基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.教与学算法4.实验参数设定5.算法结果6.参考文献7.…

8.vue3项目(八):平台属性管理页面的增删改查

目录​​​​​​​ 一、平台属性管理静态搭建 二、封装接口以及入参出参 三、页面刚加载一级分类的收集与展示</

深度学习【二】

1.运行时错误 1.1 ModuleNotFoundError: No module named ‘torch_scatter’ 参考 https://blog.csdn.net/weixin_42421914/article/details/132875571 pip install --no-index torch-scatter -f https://pytorch-geometric.com/whl/torch-1.13.1%2Bcpu.html

Day49:647. 回文子串、516.最长回文子序列

文章目录 647. 回文子串思路代码实现 516.最长回文子序列思路代码实现 647. 回文子串 题目链接 思路 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 布尔类型的dp[i][j]&#xff1a;表示区间范围[i,j] &#xff08;注意是左闭右闭&#xff09;的子串是否是回文…

亚马逊策略:通过影响者营销改造您的亚马逊商店

亚马逊卖家面临着从人群中脱颖而出的持续挑战 - 如果您是那些寻求变革性方法来接触目标受众、建立信任并将您的销售推向新高度的卖家之一&#xff0c;那么影响力营销就是您的答案。 您可能遇到过令人难以置信的成功故事&#xff0c;产品一夜之间流行起来&#xff0c;仅仅是因为…

java数据转换为stream的方法

要将数据转换为Java中的Stream&#xff0c;有几种常见的方法&#xff0c;具体取决于数据类型和数据来源。 集合&#xff08;Collection&#xff09;&#xff1a;集合对象&#xff0c;比如List、Set或者数组&#xff0c;可以使用stream()方法将其转换为Stream。 List<Strin…

集群 CPU 利用率均值达 45% ,揭秘小红书规模化混部技术实践

根据 Gartner 预测数据显示&#xff1a;2024 年全球 IT 支出预计将达到 5.1 万亿美元&#xff0c;比 2023 年增长 8 %。然而&#xff0c;该机构的另一项调查数据显示&#xff1a;全球数据中心服务器平均 CPU 利用率普遍低于 20%&#xff0c;存在巨大的资源浪费。据测算&#xf…

“全球金牌课程”1 月 13-14 日 · CSM 认证在线面授周末班【模块化教学】CST 导师亲授

课堂互动练习 CSM 认证在线培训&#xff08;周末班&#xff09; 2024 年 1 月 13-14 日 Zoom 在线面授&#xff0c;全国招生 讲师: Jim Wang 王军 10 年以上 CSM/CSPO 认证课程教学交付经验&#xff0c; 5 年以上 A-CSM/CSP-SM 认证课程教学交付经验&#xff0c; 国际 Scr…

AI 绘画 | Stable Diffusion 人物 换背景|换服装

前言 想要给固定人物换背景或者换服装,需要用到一个Stable Diffusion扩展插件,就是sd-webui-segment-anything。 sd-webui-segment-anything 不仅可以做到抠图的效果,也能实现之多蒙版的效果。什么是蒙版 图片蒙版是一种用于调节图像修改程度以及进行局部调整的工具。它通常…

面试必问的排序算法

欢迎大家到我的博客浏览。排序算法 | YinKais Blog 介绍 在面试中被问到排序算法&#xff0c;发现不能很好的描述出来&#xff0c;于是写一篇文章总结一下。常见的排序算法有 冒泡排序、插入排序、快速排序、归并排序、堆排序等。下面一一介绍。 1、冒泡排序 O(n^2) 算法思想…

村村通工程(Prim算法)/最小生成树Prim算法【数据结构】

村村通工程&#xff08;Prim算法&#xff09; 题目描述 "村村通"是国家一个系统工程&#xff0c;其包涵有&#xff1a;公路、电力、生活和饮用水、电话网、有线电视网、互联网等等。 村村通公路工程&#xff0c;是国家为构建和谐社会&#xff0c;支持新农村建设的…

Linux sed命令

目录 一. 去除单个指定文本的换行符二. 去除多个指定文本的换行符三. 抽取出指定数据3.1 分别抽取SPLREQUEST和SPLEND的数据3.2 通过join命令将文件合并3.3 抽取出指定的数据3.4 去除换行符&#xff0c;整合数据为一行 一. 去除单个指定文本的换行符 &#x1f449; info.txt …

CSS新手入门笔记整理:CSS字体样式

字体类型&#xff1a;font-family 语法 font-family&#xff1a;字体1,字体2,...,字体n; font-family可以指定多种字体。使用多个字体时&#xff0c;将按从左到右的顺序排列&#xff0c;并且以英文逗号&#xff08;,&#xff09;隔开。如果我们不定义font-family&#xff0c…