| 20大数据三班 |
| 学号 201613334 |
【实验目的】
- 理解决策树算法原理,掌握决策树算法框架;
- 理解决策树学习算法的特征选择、树的生成和树的剪枝;
- 能根据不同的数据类型,选择不同的决策树算法;
- 针对特定应用场景及数据,能应用决策树算法解决实际问题。
【实验内容】
- 设计算法实现熵、经验条件熵、信息增益等方法。
- 针对给定的房贷数据集(数据集表格见附录1)实现ID3算法。
- 熟悉sklearn库中的决策树算法;
- 针对iris数据集,应用sklearn的决策树算法进行类别预测。
【实验报告要求】
- 对照实验内容,撰写实验过程、算法及测试结果;
- 代码规范化:命名规则、注释;
- 查阅文献,讨论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