首页 > 编程语言 >实验一:决策树算法实验

实验一:决策树算法实验

时间:2022-10-28 11:46:03浏览次数:55  
标签:ID3 信息 算法 实验 增益 C4.5 决策树

| 20大数据三班 |
| 学号 201613334 |

 

【实验目的】

  1. 理解决策树算法原理,掌握决策树算法框架;
  2. 理解决策树学习算法的特征选择、树的生成和树的剪枝;
  3. 能根据不同的数据类型,选择不同的决策树算法;
  4. 针对特定应用场景及数据,能应用决策树算法解决实际问题。

【实验内容】

  1. 设计算法实现熵、经验条件熵、信息增益等方法。
  2. 针对给定的房贷数据集(数据集表格见附录1)实现ID3算法。
  3. 熟悉sklearn库中的决策树算法;
  4. 针对iris数据集,应用sklearn的决策树算法进行类别预测。

【实验报告要求】

  1. 对照实验内容,撰写实验过程、算法及测试结果;
  2. 代码规范化:命名规则、注释;
  3. 查阅文献,讨论ID3、5算法的应用场景;

 

实验过程

1.1导入包

1.2 实现熵

1.3 实现经验条件熵

1.4 实现信息增益

 

 

2.1 导入数据

2.2 转换数据集格式并查看

2.3 选择根节点特征

2.4 定义二叉树

2.5 创建决策树

2.6 决策树测试

 

 

3.1 再次导入各种包

 

4.1 创建iris数据集

4.2 预测得分

4.3 使用graphviz作图

4.4 作图结果

 

 

5.  ID3、5算法的应用场景

ID3算法

1、 ID3算法是基于信息增益计算的,信息增益是指划分可以带来纯度的提高,信息熵的下降。

2、信息增益计算:是父亲节点和信息熵减去所以子结点的加权信息熵,这个权重系数为每个子结点在父节点出现的概率,即每个子结点的归一化信息熵。

3、计算公式:

4、计算每个属性的信息增益,选择信息增益最大的作为根节点即可,其他节点选择也类似。

5、 ID3算法的特点

优点:算法简单,可解释性强;
缺点:对噪声敏感,且倾向于选择取值比较多的属性,尽管某些属性可能对分类任务没有太大的作用,但依然被选作最优属性。
C4.5算法
1、C4.5算法是ID3算法的改进,具体的,有以下四方面的改进:

采用信息增益率而非信息增益,解决了ID3倾向于选择取值多属性的问题。信息增益率=信息增益/属性熵。

采用悲观剪枝(属于后剪枝技术),通过递归估算每个内部节点的分类错误率来判断是否对其进行剪枝,这种剪枝方法不再需要一个单独的测试数据集,解决了ID3构造决策树容易产生过拟合的情况,提升了决策树的泛化能力。

C4.5算法通过选择具有最高信息增益的划分所对应的阈值,可以离散化处理连续属性。

针对数据集不完整情况,即存在缺失值,C4.5可以进行处理,乘以加权系数即可。

2、 C4.5算法的特点:

优点:C4.5算法在ID3算法的基础上,用信息增益率代替了信息增益,解决了噪声敏感的问题;并且可以对构造树进行剪枝、处理连续属性以及数值缺失等情况;
缺点:C4.5算法需要对数据集进行多次扫面,算法效率相对较低。

引用文献(原文链接:https://blog.csdn.net/weixin_43851352/article/details/107309851)

 

 

6. 实验中的问题与解决

在第二次导包时显示没有module ’Graphviz‘

即使去终端pip install graphviz 并且pip list 可以查看到graphviz版本的情况下也会保持这个错误

查阅资料后得到的解决方法是在终端卸载转而去官网下载graphviz(可以视为一个软件)并配置系统变量

6.3.1 pip uninstall

6.3.2 在系统环境变量中添加dot.exe的路径

至此解决了没有module ’Graphviz‘这一问题,但是后续作图还会遇到新的问题,无法运行dot

解决方法也很简单,前面做的路径也并没有出错,只需要重启一下这个错误就会被覆盖。

 

7. 实验结束

 

标签:ID3,信息,算法,实验,增益,C4.5,决策树
From: https://www.cnblogs.com/ViceVavina/p/16835290.html

相关文章

  • 压缩算法 Compress
    {:toc}压缩算法不存在能够压缩任意比特流的算法归谬法论证:如果该算法存在,由于比特流为离散值,压缩后的比特流至少比原比特流少一个比特,最终可以是任意小的,这显然是荒谬的......
  • A*算法 详解与例题
    ......
  • 搜索-迭代加深搜索、IDA*算法
    ......
  • 实验6:开源控制器实践——RYU
    一、实验目的能够独立部署RYU控制器;能够理解RYU控制器实现软件定义的集线器原理;能够理解RYU控制器实现软件定义的交换机原理。二、实验环境Ubuntu20.04Desktopamd6......
  • 实验6:开源控制器实践——RYU
    (一)基本要求1、搭建下图所示SDN拓扑,协议使用OpenFlow1.0,并连接Ryu控制器,通过Ryu的图形界面查看网络拓扑。构建topo2.阅读Ryu文档的TheFirstApplication一节,运行当......
  • P4718 【模板】Pollard-Rho算法
    题目链接P4718【模板】Pollard-Rho算法题目描述MillerRabin算法是一种高效的质数判断方法。虽然是一种不确定的质数判断法,但是在选择多种底数的情况下,正确率是可以接......
  • 浅析摩尔投票算法
    ·引入:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}由于数字2在数组中出现了五次,超过数组长度的......
  • 代码随想录算法训练营第二天|977、有序数组的平方|209、长度最小的子数组|59、螺旋矩
    977、有序数组的平方·双指针思想题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/前提:按非递减顺序排序的整数数组   (存在重复值)   可能......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Python代......
  • 实验1:SDN拓扑实践
    实验1:SDN拓扑实践一、实验目的能够使用源码安装Mininet;能够使用Mininet的可视化工具生成拓扑;能够使用Mininet的命令行生成特定拓扑;能够使用Mininet交互界面管理SDN拓......