|博客班级|https://edu.cnblogs.com/campus/czu/classof2020BigDataClass3-MachineLearning|
|作业要求|https://edu.cnblogs.com/campus/czu/classof2020BigDataClass3-MachineLearning/homework/12858|
|学号|201613316|
【实验目的】
1.理解决策树算法原理,掌握决策树算法框架;
2.理解决策树学习算法的特征选择、树的生成和树的剪枝;
3.能根据不同的数据类型,选择不同的决策树算法;
4.针对特定应用场景及数据,能应用决策树算法解决实际问题。
【实验内容】
1.设计算法实现熵、经验条件熵、信息增益等方法。
2.针对给定的房贷数据集(数据集表格见附录1)实现ID3算法。
3.熟悉sklearn库中的决策树算法;
4.针对iris数据集,应用sklearn的决策树算法进行类别预测。
【实验报告要求】
1.对照实验内容,撰写实验过程、算法及测试结果;
2.代码规范化:命名规则、注释;
3.查阅文献,讨论ID3、C4.5算法的应用场景;
4.查询文献,分析决策树剪枝策略。
实验内容及结果
实验代码及截图
一、实现熵、经验条件熵、信息增益等方法。
1.导入包
【实验小结】
1、讨论ID3、C4.5算法的应用场景:
ID3算法应用场景:适于处理大规模的学习问题,是数据挖掘和知识发现领域中的一个很好的范例。C4.5算法在机器学习、知识发现、金融分析、遥感影像分类、生产制造、分子生物学和数据挖掘等领域得到广泛应用。
2、分析决策树剪枝策略
剪枝的目的在于:缓解决策树的"过拟合",降低模型复杂度,提高模型整体的学习效率
(决策树生成学习局部的模型,而决策树剪枝学习整体的模型)
基本策略:
预剪枝:是在决策树生成过程中,对每一个结点在划分前进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点。
后剪枝:先从训练集生成一棵完整的决策树,然后自底向上地对非叶子结点进行考察,若将该结点对应地子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。
【实验中遇到的问题及解决办法】
from sklearn.tree import DecisionTreeClassifier from sklearn.tree import export_graphviz import graphviz出现No module named 'graphviz'报错
解决方案:conda install graphviz pip install graphviz
graphviz.Source(dot_graph)出现failed to execute WindowsPath('dot'), make sure the Graphviz executables are on your systems' PATH报错
解决方案:
重新下载graphviz,然后修改环境变量,最后关闭Jupyter,cmd打开命令提示符,执行dot -version查看是否配置成功,如果成功,重启Jupyter。
标签:剪枝,结点,graphviz,算法,实验,决策树 From: https://www.cnblogs.com/luowenhui220411/p/16842405.html