决策树 -- 再不懂我就哭了

决策树模型及案例(Python) 目录 1 决策树模型简介 2 Gini系数(CART决策树) 3信息熵、信息增益 4决策树模型代码实现 4.1分类决策树模型(DecisionTreeClassifier) 4.2回归决策树模型(DecisionTreeRegressor) 5案例:员工离职预测模型 5.1模型搭建 5.1.1数据读取与预处理 5.1.2提取特征变量和目标变量 5.1.3划分训练集与测试集 5.1.4模型搭建及训练 5.1.5代码汇总 5.2模型预测及评估 5.2.1直... 阅读详情

决策树

什么是决策树?

决策树类似于一个流程图的树结构:其中,每一个内部结点表示杂志一个属性上的测试,每个分支代表一个属性输出,而每个树叶节点代表类或类分布。树的最顶层是根结点,我们通过一个例子来说明,通过分析不同年龄段,不同身份,不同收入的人群来预测一个人是否会购买电脑,如果画出决策树我们会得到下图
在这里插入图片描述

构造决策树的基本原理

在这里插入图片描述
原理: 首先从训练样本矩阵中选择第一个特征进行子表划分,使每个子表中该特征的值全部相同,然后再在每个子表中选择下一个特征按照同样的规则继续划分更小的子表,不断重复直到所有的特征全部使用完为止,此时便得到叶级子表,其中所有样本的特征值全部相同。对于待预测样本,根据其每一个特征的值,选择对应的子表,逐一匹配,直到找到与之完全匹配的叶级子表,用该子表中样本的输出,通过平均(回归)或者投票(分类)为待预测样本提供输出。

随着子表的划分,信息熵(信息的混乱程度)越来越小,信息越来越纯,数据越来越有序。

那么这里就不得不提一个概念了——信息熵

信息熵

信息和抽象,如何度量?
1948年,香农提出了 ”信息熵(entropy)“的概念
一条信息的信息量大小和它的不确定性有直接的关系,要搞清楚一件非常非常不确定的事情,或者
是我们一无所知的事情,需要了解大量信息==>信息量的度量就等于不确定性的多少

例子:猜世界杯冠军,假如一无所知,猜多少次?
每个队夺冠的几率不是相等的
香农用: 比特(bit)来衡量信息的多少

在这里插入图片描述
在这里插入图片描述
变量的不确定性越大,熵也就越大

决策树归纳算法 (ID3)

ID3 算法是在1970-1980之间由J.Ross. Quinlan发明的算法

根节点的确定

相信在前面的例子中,一定有人会有一个疑问,为什么要把age作为跟结点呢?

我们通过信息获取量来判断,即通过那个结点的信息获取量越大我们就选择这个结点作为根节点
信息获取量(Information Gain):Gain(A) = Info(D) - Infor_A(D)
通过A来作为节点分类获取了多少信息
其中Info(D)和Info_A(D)就是通过香农给出的熵计算公式来进行计算
在这里插入图片描述
在这里插入图片描述
公式中的 5 14 4 14 5 14 \frac{5}{14}\frac{4}{14}\frac{5}{14} 145​144​145​分别是三种人群,不同年龄端的比例,括号内的内容则是在这个年龄段内购买的人数,以下的公式也可以类似脱离
在这里插入图片描述
在这里插入图片描述
类似,Gain(income) = 0.029, Gain(student) = 0.151, Gain(credit_rating)=0.048

所以,选择age作为第一个根节点
在这里插入图片描述

算法

  1. 树以代表训练样本的单个结点开始(步骤1)
  2. 如果样本都在同一个类,则该结点称为树叶,并用该类标号(步骤2 和3)
  3. 否则,算法使用称为信息增益的基于熵的度量作为启发信息,能够最好地将样本分类的属性(步骤6).该属性称为该结点的测试或判定的属性(步骤7)
  4. 在该算法版本中,所有的属性都是分类的,即离散值。连续的属性必须离散化
  5. 对测试属性的每个已知的值创建一个分支,并据此划分样本(步骤8-10)
  6. 算法使用同样的过程,递归地形成每个划分上的样本判断树。一旦一个属性出现在一个结点上,就不必在该结点的任何后代上考虑它(步骤13)

递归划分的步骤当下列条件之一成立时停止:

1. 给定结点的所有样本属于同一类(步骤2和3)
2.没有剩余的属性可以用来进一步划分样本(步骤4).在此情况下,使用多数表决(步骤5)
3.这涉及将给定的结点转换为树叶,并用样本中的多数所在的类标记它,替换地,可以存放系欸但样本的类分布
4.分支
5.test_attribute = ai 没有样本 (步骤11).在这种情况下,以samples中的多数类创建一个树叶

其他算法

其他算法:
C4.5: Quinlan
Classification and Regression Trees (CART): (L. Breiman, J. Friedman, R. Olshen, C. Stone)
共同点:都是贪心算法,自上而下(Top-down approach)
区别:属性选择度量方法不同: C4.5 (gain ratio), CART(gini index), ID3 (Information Gain)

树剪枝叶 (避免overfitting)

当数据量很大的是否,我们会发现得到的模型对训练集符合的很好但是对测试集却不行,这个时候我们就要通过剪枝来提高模型的准确性
不必用尽所有的特征,叶级子表中允许混杂不同的特征值,以此降低决策树的层数,在精度牺牲可接受的前提下,提高模型的性能。通常情况下,可以优先选择使信息熵减少量最大的特征作为划分子表的依据。
剪枝又分为预剪枝 (Pre-Pruning) 和 后剪枝 (Post-Pruning) 但是在本文中就不过多的描述

决策树的优点:

直观,便于理解,小规模数据集有效

决策树的缺点:

处理连续变量不好
类别较多时,错误增加的比较快
可规模性一般

python代码实现

代码中用到的资料在这里哦

点我啊
提取码:cu45

import pandas as pd
from sklearn import tree  # 导入决策树模块
import graphviz  # 导入可视化模块
import numpy as np

# 导入数据
data = pd.read_csv('../ml_data/AllElectronics.csv')
# 数据的预处理 单词无法进行训练用1,2,3分别代替其中的三类
data = data.replace(['youth', 'high', 'yes', 'excellent'], 1)
data = data.replace(['senior', 'medium', 'no', 'fair'], 2)
data = data.replace(['middle_aged', 'low'], 3)
print(data)
# 切割训练数据
train_x = data.iloc[:, 1:5]
train_y = data.iloc[:, 5]
# 调用方法使用ID3的方法进行训练
dtc = tree.DecisionTreeClassifier(criterion='entropy')
dtc.fit(train_x, train_y)
# 模型输出
dot_data = tree.export_graphviz(
    dtc,  # (决策树模型)
    out_file=None,
    feature_names=['age', 'income', 'student', 'credit_rating'],  # 模型中对应标签名称
    filled=True,
    impurity=False,
    rounded=True
)
graph = graphviz.Source(dot_data)  # 选择要可视化的dot数据
graph.render(r'C:\Users\Lenovo\Desktop\tree')  # 将可视化结果输出至指定位置

最后得到的结果就是这个
在这里插入图片描述

结语

对于机器学习的算法,你可能不能完全的自己书写出来,但是绝对不要当啥都不知道的调包虾,理解其中的原理才是王道。

R语言——决策树模型         决策树(Tree Nodels)是一种创建树状模型的方法,它使用‘基尼不纯度’(Gini Impurity)或信息增益(Information Gain)等标准对节点进行递归分割,以创建树状模型。决策树看起来像是以树状形式排列的一系列的if-else语句,易于理解,执行速度快。并且,它能够很好地表现多个特征之间的相互作用,适用于多种数据类型。(树状模型中,随机森林性能表现卓越) ... 阅读详情

相关推荐

机器学习第五章之决策树模型

机器学习专题系列

wangyutao12345的博客 5187

机器学习(二) 使用决策树进行分类

分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点和有向边组成。内部结点和叶节点。内部结点表示一个特征或属性,叶节点表示一个类。

m0_52043037的博客 2629

机器学习——决策树模型:Python实现

机器学习——决策树模型:Python实现欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你

qq_34357269的博客 8772

决策树-Python

决策树可视化 Error graphviz Not a directory: ‘dot’

WillPower 561

决策树模型——鸢尾花分类

构建一个决策树分类模型,实现对鸢尾花的分类 1.lris数据集介绍: 鸢尾花数据集是机器学习领域中非常经典的一个分类数据集。数据集全名为:Iris Data Set,总共包含150行数据。 每一行由4个特征值及一个目标值(类别变量)组成。 其中4个特征值分别是:萼片长度、萼片宽度、花瓣长度、花瓣宽度 目标值为3种不同类别的鸢尾花:山鸢尾、变色鸢尾、维吉尼亚鸢尾 2.读取数据 Iris...

pillow的博客 2万+

Python决策树模型的基本原理和参数调优【附代码】

下图所示为一个典型的决策树模型:员工离职预测模型的简单演示。该决策树首先判断员工满意度是否小于5,答案为“是”则认为该员工会离职,答案为“否”则接着判断其收入是否小于10,000元,答案为“是”则认为该员工会离职,答案为“否”则认为该员工不会离职。这里。

weixin_60476982的博客 4925

数据分类分析--决策树算法

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。决策树是一种类似于流程图的树结构,其中每个内部节点表示在一个属性上的测试,每个分支代表该测试的一个输出,而每个叶子节点(终端节点)存放一个分类结果。 上图是一个决策时的示例。 当决策树构建好之后,对检验记录进行分类就很容易,从树的根节点开始,将测试条件用于检验记录,沿着树的分支达到叶子节点,得到分类结果。原则上讲,对于给定的属性集,可以构造的决策树很多,所有如何在合理的时间内构造出具有一

打工人。。 2427

决策树模型(R语言)

R语言中最常用于实现决策树的有两个包,分别是rpart包和party包,其区别如下: rpart包的处理方式:首先对所有自变量和所有分割点进行评估,最佳的选择是使分割后组内的数据更为“一致”(pure)。这里的“一致”是指组内数据的因变量取值变异较小。rpart包对这种“一致”性的默认度量是Gini值。确定停止划分的参数有很多(参见rpart.control),确定这些参数是非常重要而微妙的,因...

X_dmword的博客 7041

机器学习笔记(1)——决策树

机器学习中分类和预测算法的评估: 准确率 速度 强壮性 可规模型 可解释性   决策树 决策树是一个类似于流程图的结构 节点表示判断,将连续变量离散化,规定阈值归类 信息熵:变量的的不确定性越大,熵也就越大 计算公式: P(x)为单个事件的概率 决策树归纳算法(ID3) 选择属性判断结点          信息获取量(Information Gain):Gain(A

angus_monroe的博客 565

【机器学习】九大决策树模型总结

这篇博客深入探讨了九种不同的决策树模型,每种模型都拥有其独特的特点和应用场景。我将带您了解一些经典的模型,让你理解它们的工作原理,并在实践中灵活运用它们。

chunyang的博客 3614

决策树模型(Decision Tree)

P1P_1P1​:表一种类别的数据占总数居的比例。P01−P1P0​1−P1​:表示除了P1P_1P1​类别以外的其他数据占总数据的比例。

SoyMilk的博客 3495

决策树-理论理解

机器学习中分类和预测算法的评估 准确率:例如分类达到的准确率是多少 速度:准确率高,但是算法复杂度高不高(时间快不块) 强壮行:当样本集数据与一些噪音的时候或者有一些值缺失的时候,算法表现的是不是很好。 可规模性:当一下算法在小的数据集中表现良好,但是当数据集成指数形式增长的时候,变成很大的数据集时,算法的表现如何,是否可规模化。 可解释性:当算法做出一些特征值的选择和归类的时候,我们是否能容易的...

weixin_42093798的博客 812

从零开始:YOLOv8车牌检测模型训练全流程实战

本文详细介绍了从零开始训练YOLOv8车牌检测模型的全流程实战指南。内容涵盖环境搭建、数据集收集与标注、模型配置与训练、评估测试及高级优化技巧。通过使用预训练模型和迁移学习,开发者可以高效构建精准的车牌检测系统,并掌握模型导出与部署的关键步骤。

weixin_29061041的博客 335

【机器学习15】决策树模型详解

决策树算法前言一、决策树算法的概述1.树模型2.树模型基本流程二、熵的作用三、决策树构造实例四、信息增益率和gini系数五、剪枝方法六、分类、回归任务七、树模型的可视化展示八、决策边界展示分析九、决策树预剪枝常用参数十、回归树模型总结 前言 随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的决策树的详细内容。 一、决策树算法的概述 1.树模型 决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。

lys_828的博客 4万+

TSMaster MBD模块实战:如何用Simulink模型快速搭建汽车电子测试环境

本文实战演示了如何利用TSMaster的MBD模块,将Simulink模型快速部署为汽车电子自动化测试环境的核心。通过建立模型与TSMaster系统变量的实时数据通道,并利用数据仓库统一数据定义,工程师能无缝连接算法仿真与真实总线网络,显著提升从模型到HIL测试的验证效率。

php55的博客 209

Altera Cyclone4 EP4CE15F17C8核心板硬件设计避坑指南(附AD09工程文件)

本文深入解析Altera Cyclone4 EP4CE15F17C8核心板硬件设计中的关键问题与解决方案,涵盖电源架构优化、信号完整性处理、热设计及生产调试要点。特别提供经过验证的AD09工程文件,帮助开发者规避常见设计陷阱,提升FPGA项目的成功率与可靠性。

weixin_29159441的博客 298

用通俗易懂的方式讲解:决策树模型及案例(Python 代码)

基本原理是通过对一系列问题进行if/else的推导,最终实现相关决策。决策树模型的一个实例:决策树的概念并不复杂,主要是通过连续的逻辑判断得出最后的结论,其关键在于如何建立这样一棵“树”。

Python数据挖掘 2万+

【一】Android MediaPlayer整体架构源码分析 -【初始化和创建】

本系列文章分析的安卓源码版本:【Android 10.0 版本】 一、MediaPlayer的简单调用关键流程 【这只是一个简单使用过程示例】 // 此处变量声明省略 private void play() { // 先获取SurfaceHolder mSurfaceView = findViewById(R.id.surface_view); mSurfaceHolder = mSurfaceView.getHolder(); mSurfac

CloverLHao的博客 4347

决策树模型构建+调参Python代码——用决策树模型实现机器学习

决策树模型构建+调参Python代码——用决策树模型实现机器学习。

qq_41698317的博客 3529

本地部署llama3Chinese

这通常意味着你的构建环境可能不完整或者没有正确配置。通常是由 Visual Studio 的 C++ 工具提供的。(大模型对错误的解析)错误信息表明在尝试构建一个项目时,在 Windows 上,

m0_49343639的博客 1432

三、参考比较法之城市建成区提取——提取

在正式开始提取之前,还是要继续啰嗦一下,其实基于夜间灯光数据建成区提取,可以分为好几个层次,基于县一级、市一级、省一级,很多论文的做法都是以市一级为准,也就是统计好市一级城市的每一年的统计年鉴中的建成区面积作为备用。有人可能会问为什么不以县一级,由于县一级的统计数据一般存在缺失,很难形成一个长时间序列的数据,所以一般采取的是市一级。前文也进行建议,如果确实要基于县一级进行提取可以参考前面理论介绍那篇文章中的相关建议。那么当我们确定阈值后如何将城市建成区提取出来?

端木宛白的博客家园 5401

决策树模型

今天我们来复习决策树模型,并用项目教大家快速了解决策树模型,我会将大家编写代码中常见的错误点在代码注释中指出,希望不会浪费大家的时间,高效学习以上就是今天要讲的内容,本文仅仅简单介绍了决策树模型的推导与实现,还有一些其他的优化决策树模型的方法但本文主旨是便于大家复习模型,就不再赘述以上所有代码在Github仓库。

2403_85773052的博客 1298

鸿蒙应用发布实战:应用热更新的实现

在移动应用开发领域,应用更新是持续交付价值的关键环节。传统的应用更新方式需要用户手动下载完整安装包,不仅用户体验差,而且更新率往往不理想。热更新技术(也称为OTA更新)允许应用在不重新安装的情况下动态更新部分功能,极大提升了用户体验和迭代效率。本文专注于鸿蒙操作系统下的应用热更新实现方案,涵盖从原理到实践的完整知识体系。鸿蒙热更新的技术架构差分更新算法实现动态部署机制实际项目中的最佳实践安全与性能优化策略首先介绍鸿蒙热更新的背景和核心概念深入分析技术原理和算法实现。

操作系统内核探秘的博客 965

Decision Tree Model|决策树模型

本文介绍了决策树模型的基本概念和应用实例。决策树通过一系列条件判断对数据进行分类或回归预测,以猫分类为例,展示了决策树从根节点到叶节点的分类过程。文章还比较了四种基于相同特征集但结构不同的决策树,分析其差异原因(数据划分、特征重要性、随机性等),并指出评估决策树优劣的标准包括准确率、泛化能力和解释性。最后建议实践中可采用集成学习方法提升模型性能。更多计算机知识欢迎访问作者博客网站rn.berlinlian.cn。

m0_74462934的博客 1935

【WRF-Chem Emissions教程第一期】WRF-Chem 排放概述

WRF-Chem 排放概述

WW、forever的博客 852

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【海量数据挖掘/数据分析】之 决策树模型(决策树模型、决策树构成、决策树常用算法、决策树性能要求、信息增益、信息增益计算公式、决策树信息增益计算实例)

【海量数据挖掘/数据分析】之 决策树模型(决策树模型、决策树构成、决策树常用算法、决策树性能要求、信息增益、信息增益计算公式、决策树信息增益计算实例) 一、决策树模型 1、常用算法 2、属性划分策略 3、其他算法 三、决策树算法性能要求 四、 决策树模型创建 ( 递归创建决策树 ) 1 、 决策树模型创建 2 、 决策树创建算法 ( 递归 ) 3 、 递归操作 4 、 递归停止的条件 五、 决策树 树根属性 选择 六、信息增益 说明 1、 熵 和 信息 的数据组成 2 、 信息增

仙魁XAN 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 多项式回归(python实现)
下一篇: 使用两种集合算法(正向激励和随机森林)去预测小黄车的使用次数
AndSonder
博客等级 码龄7年 364粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值