【机器学习】决策树

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…

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

内测分发平台的微服务化部署支持是现代应用开发和部署的一个重要特性。首先我们得知道什么是微服务化部署都有哪些关键功能&#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.…

深度学习【二】

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;仅仅是因为…

集群 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…

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

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

Apache Airflow (十四) :Airflow分布式集群搭建及测试

&#x1f3e1; 个人主页&#xff1a;IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;加入大数据技术讨论群聊&#xff0c;获取更多大数据资料。 &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你大数据的个人空间-豹…

【C++】探索C++模板编程

文章目录 什么是C模板&#xff1f;模板的基本语法类型模板参数模板函数的示例类模板的示例总结 C模板是一种强大的编程工具&#xff0c;它可以实现泛型编程&#xff0c;使代码更加灵活和可重用。本篇博客将介绍C模板的基本语法、类型模板参数和模板函数的使用&#xff0c;并通过…

MaaS/PaaS/SaaS

生成式AI时代的AI Infra—从DevOps->MLOps->LLMOps - 知乎距离上次讲LLM相关的内容已经过去2个月了 LLM as Controller—无限拓展LLM的能力边界&#xff0c;本文想要从AI Infra的角度出发&#xff0c;从更宏观的角度看Generative AI对AI Infra生态产生的变化&#xff0c;…

Web前端开发技术:图像与多媒体文件

在现代的Web开发中&#xff0c;图像和多媒体文件在各种网站和应用程序中扮演着至关重要的角色。它们不仅能提供更丰富的内容&#xff0c;还能大大提高应用程序的吸引力和用户体验。本文将深入介绍一些关键的Web前端开发技术&#xff0c;这些技术将有助于开发者在处理图像和多媒…

前馈式神经网络与反馈式神经网络的区别,联系,各自的应用范围和场景!!!

文章目录 前言一、前馈式神经网络是什么&#xff1f;二、前馈式神经网络包括&#xff1a;三、反馈式神经网络是什么&#xff1f;四、反馈式神经网络包括&#xff1a;总结 前言 前馈式神经网络和反馈式神经网络是两种主要的神经网络架构&#xff0c;它们在网络结构和应用场景上…

Python---引用变量与可变、非可变类型

引用变量 在大多数编程语言中&#xff0c;值的传递通常可以分为两种形式“ 值 传递 与 引用 传递”&#xff0c;但是在Python中变量的传递基本上都是引用传递。 变量在内存底层的存储形式 a 10 第一步&#xff1a;首先在计算机内存中创建一个数值10&#xff08;占用一块…

【Leetcode】907. 子数组的最小值之和

给定一个整数数组 arr&#xff0c;找到 min(b) 的总和&#xff0c;其中 b 的范围为 arr 的每个&#xff08;连续&#xff09;子数组。 由于答案可能很大&#xff0c;因此 返回答案模 10^9 7 。 示例 1&#xff1a; 输入&#xff1a;arr [3,1,2,4] 输出&#xff1a;17 解释&…

类 —— 封装、四类特殊成员函数、this指针、匿名对象、深浅拷贝问题

类 将同一类对象的所有属性都封装起来。 类中最基础的内容包括两部分&#xff0c;一个是属性、一个是行为。 ● 属性&#xff1a;表示一些特征项的数值&#xff0c;比如说&#xff1a;身高、体重、性别、肤色。这些属性都是名词。属性一般都以名词存在。属性的数值&#xff0c…