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

决策树C4.5算法

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

收录于:18天前

决策树-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

在这里插入图片描述

. . .

相关推荐

额外说明

HTMLCSSJavaScript与PHPASPJSP之间的区别

【web开发】HTML\CSS\JavaScript与PHP\ASP\JSP之间的区别 html/css/javascript 都是前端的,给浏览器执行、渲染的,你本地打开就可以看到效果 php/asp/jsp 等是后端的程序,在服务器运行的,他们生成前

额外说明

V4-07 微服务介绍 Nacos的下载, 创建,配置,运行 {差格式, 样式修改即可}

1. Spring Cloud 介绍: 略 2. Nacos 创建数据库nacos_config DROP DATABASE IF EXISTS `nacos_config`; CREATE DATABASE `nacos_config` DEFAULT

额外说明

05.抽象工厂模式+反射--AbstractFactory&Reflect

抽象工厂模式(AbstractFactory)和反射技术(Reflect)都在前面的笔记中记录了,现在将两个功能结合起来。还是以快餐店的食品为例子。 首先,有快餐店的食品作为产品的基类,然后有鸡腿和汉堡两类食品,而鸡腿和汉堡又分肯德基的和麦当劳的。肯德基

额外说明

【stm32】初识stm32—stm32环境的搭建

文章目录 -stm32资料分享 -stm32是什么 -具体过程 -️‍-安装驱动 -1 -2 -️‍-建立Start文件夹 -stm32资料分享 我用夸克网盘分享了「STM32入门教程资料.zip」,点击链接即可保存。打开「夸克APP」,无需下载在线播放

额外说明

Java虚拟机类加载器与虚拟机字节码执行引擎

1.类加载器 对于类加载器,java虚拟机规范中有这么一句,“通过一个类的全限定名来获取描述此类的二进制字节流”,正因为这个看似宽泛的约束使得java虚拟机的实现有了很多的种类,各自有自己的特点并占有自己的领域。虽然类加载器是由Applet技术开发出来的

额外说明

如何查看centos7系统的服务器ip地址

    输入ip查询命名 ip addr  也可以输入 ifconfig(centOs7没有ifconfig命令)查看ip,但此命令会出现3个条目,centos的ip地址是ens33条目中的inet值。   发现 ens33 没有 inet 这个属性,那

额外说明

常用笔记记录

一、vue v-if 一闪解决 <div class="#app" v-cloak> <p>{ {value.name}}</p> </div> [v-cloak] { display: none; } 二、vue条件动态sty

额外说明

系统缺失d3dx10.dll文件导致软件或游戏无法运行怎么办?

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

额外说明

win11系统提示找不到vcomp.dll文件怎么办?

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

ads via 小工具