小工具      在线工具  汉语词典  css  js  c++  java

决策树C4.5算法

机器学习,决策树,c4.5算法 额外说明

收录于:152天前

决策树-C4.5

前面的ID3算法已经介绍了决策树的基本概念。 C4.5算法在ID3算法的基础上进行了改进。它利用信息增益比构建决策树,并具有剪枝功能以防止过度拟合。本模块将介绍C4.5算法的决策树构建策略。

欠拟合:训练得到的模型在训练集集测试中表现就很差,准确度很低。
过拟合:训练得到的模型在训练集表现很好,但在测试集表现很差。

信息增益比:特征A对训练集D的信息增益比定义为特征A的信息增益与训练集D对于A的信息熵之比。
信息增益比 Gain (D, A) = i n fo (D, A) H (D, A) 信息增益比 Gain (D, A) = \frac{ info (D, A)} {H (D, A) }信息增益比G艾因D,A=HD,AFD,A

公式在ID3算法中

修剪:在决策树对训练集的预测误差和数的复杂度之间找到一个平衡。剪枝算法的功能是输入生成的决策树和参数,输出剪枝后的决策树。包括先剪枝和后剪枝。

  1. 先修剪:提前停止树的构建,对树进行“修剪”。提前停止策略定义了树的深度,当到达指定深度时自动停止构建;
  2. 后剪枝:首先构建完整的子树,将决策树中那些置信度不足(信息增益低)的子树替换为叶子节点(类别)。

决策树构造策略

  1. 计算训练集,得到各个特征的信息增益比
  2. 选择当前信息增益比最大的特征作为决策树的头节点,并根据特征的不同属性将其划分为不同的子树。
  3. 去除该特征后计算在当这个属性满足时剩下的N个特征的信息增益比,并继续划分子树
  4. 据此递归所有特征划分完成,每个子树结束后都有对应类别。

以图中西瓜数据集(D)描述构造决策树原理
在这里插入图片描述

根据公式计算每个特征的信息增益:info(D, color)=0.109, info(D, basic)=0.143, info(D, Knock)=0.141, info(D,texture)=0.381, info( D(脐)=0.289,信息(D,触摸)=0.006

再计算信息增益比:增益 ( D , 颜色 ) = i n f o ( D , 颜色 ) H ( D , 颜色 ) = i n f o ( D , 颜色 ) − ( 6 17 log ⁡ 2 6 17 + 6 17 log ⁡ 2 5 17 + 5 17 log ⁡ 2 5 17 ) = 0.069 增益(D,颜色) = \frac{info(D,颜色)}{H(D,颜色)}=\frac{信息(D,颜色)}{-(\frac{6}{ 17}\log_2\frac{6}{17}+\frac{6}{17}\log_2\frac{5}{17}+\frac{5}{17}\log_2\frac{5}{17} )}=0.069G艾因D,颜色=HD,颜色FD, 颜色)=-17 号6loG217 号6+17 号6loG217 号5+17 号5loG217 号5FD,颜色=0.069

然后计算其他值:Gain(D,base)= 0.046,Gain(D,knock)= 0.051,Gain(D,texture)= 0.043,Gain(D,脐)= 0.072,Gain(D,touch)= 0.028

第一次计算可知Gain(D,肚部)=0.072最大作为决策树根节点,构造决策树:
在这里插入图片描述

然后再脐部凹陷,脐部稍凹,脐部平坦的条件下再计算除脐部外的其他特征的信息增益比,继续递归构造子树。
在这里插入图片描述
C4.5算法实现构造决策树:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn import tree  #导入树库可视化决策树
from sklearn.tree import DecisionTreeClassifier   #导入决策树模型

#加载数据集
iris=load_iris()

#划分数据集和测试集
x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target,test_size=0.3)

#构造决策树模型
decision_tree=DecisionTreeClassifier(criterion="entropy",max_depth=5)  #criterionz指定节点特征选择基准entropy是ID3,c4.5;gini是CART算法 #decision_tree是常用的剪枝参数

#训练决策树
decision_tree=decision_tree.fit(x_train,y_train)

score=decision_tree.score(x_test,y_test)
print(score)
结果:
0.8666666666666667

可视化决策树:
print(tree.plot_tree(decision_tree))

在这里插入图片描述

// graphviz 库可视化树
import graphviz    
graph = tree.export_graphviz(decision_tree, out_file=None)
graph = graphviz.Source(graph)
graph

在这里插入图片描述

. . .

相关推荐

额外说明

NamedParameterJdbcTemplate 命名参数 in() 传递参数

在经典的 JDBC 用法中, SQL 参数是用占位符 ? 表示,并且受到位置的限制. 定位参数的问题在于, 一旦参数的顺序发生变化, 就必须改变参数绑定. 在 Spring JDBC 框架中, 绑定 SQL 参数的另一种选择是使用具名参数(named p

额外说明

分享ping域名https://ping.chinaz.com/

https://ping.chinaz.com/

额外说明

运维神器——jenkins发布环境

QQ 1285575001 Wechat M010527 技术交流 QQ群599020441 纪年科技aming #容器化部署——Docker#

额外说明

Win7/Win8 文件删除延迟问题

        之前测试同事发现,执行程序的卸载操作后,显示卸载成功,但是到对应安装目录下看到有几个exe文件并没有被删除,仍然在目录中。要等待大约几分钟左右,这些文件才会实际被删除掉,在此期间无法对这些文件进行覆盖、修改、删除及运行等操作,应该是在此过

额外说明

Android R: 记一次修复AOSP的Desktop(桌面模式)或者External Display(扩展投屏)点击最大化按钮,跳出其他应用App问题

Android R: 记一次修复AOSP的Desktop(桌面模式)或者External Display(扩展投屏)点击最大化按钮,跳出其他应用App问题 原因分析: 抓取点击设置App的最大化按钮,窗口慢慢放大时的当时的log log_click_Mi

额外说明

【金仓数据库设置主键自增】

金仓数据库主键设置 1.创建表 2.添加主键约束 3.新建序列 4.执行sql语句 1.创建表 创建表时需要设置主键字段为整型 2.添加主键约束 主键约束添加到确认列 3.新建序列 设置序列起始值与增量 4.执行sql语句 alter table “表名

额外说明

【最实用的chrome插件】CSDN 浏览器插件:CSDN 开发者助手(测评手册2)

目录 一、前言 二、插件下载 1、官方插件下载地址 2、【安装包下载方式 ①】crx 文件下载:本地下载 (推荐) 3、【安装包下载方式 ②】zip 文件下载:Beta 版下载(不推荐) 4、【安装包下载方式 ③】Chrome 应用商店安装(不推荐) 三

额外说明

Windows系统提示缺少iscsidsc.dll文件的解决办法

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个iscsidsc.dll文件

额外说明

软件缺少msmapi32.ocx无法运行问题修复

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个msmapi32.ocx文件进行安装(前提是找到适合的版本),

额外说明

wordpress列数布局_如何在WordPress中列出未来即将发布的预定帖子

WordPress 列布局 最近,我们的一位用户询问我们如何在 WordPress 中列出计划的或未来即将发布的帖子。显示即将发布的帖子有助于吸引人们订阅您的博客。在本文中,我们将向您展示如何在 WordPress 侧边栏中显示未来即将发布的帖子。 最近

ads via 小工具