- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验三 分类挖掘算法(C4.5)
一、实验目的
1、理解分类
2、掌握分类挖掘算法C4.5
3、为改进C4.5打下基础
二、实验内容
1、选定一个数据集(可以参考教学中使用的数据集)
2、选择合适的实现环境和工具实现算法C4.5
3、给出分类规则
三、实验原理
C4.5是机器学习算法中的另一个分类决策树算法,它是基于ID3算法进行改进后的一种重要算法,相比于ID3算法,改进有如下几个要点:
1)用信息增益率来选择属性。ID3选择属性用的是子树的信息增益,这里可以用很多方法来定义信息,ID3使用的是熵(entropy,熵是一种不纯度度量准则),也就是熵的变化值,而C4.5用的是信息增益率。
2)在决策树构造过程中进行剪枝,因为某些具有很少元素的结点可能会使构造的决策树过适应(Overfitting),如果不考虑这些结点可能会更好。
3)对非离散数据也能处理。
4)能够对不完整数据进行处理。
信息增益计算公式:
信息熵计算公式:
信息增益率公式:
其中,IG就是前面的信息增益,IV计算公式如下: 简化公式如下:
其中,V表示属性集合A中的一个属性的全部取值。
四、实验要求
1、数据集具有一定的代表性,可以使用数据库技术管理
2、实现界面友好
3、提交实验报告:实验题目、目的、数据集描述、实验环境、过程、结果和分析等。
五、实验步骤
1、毕业生就业信息数据集,如图1所示:
图1 毕业生就业信息数据集
图中数据是经过预处理的数据集,从表中我们可以得到类标号属性“就业情况”有2个不同的值(“已”,“未”),因此有2个不同的类。其中对应于类值“已”有14个样本,类值“未”有8个样本。
2、算法流程
假设用S代表当前样本集,当前候选属性集用A表示,则C4.5算法的伪代码如下:
算法:Generate_decision_tree由给定的训练数据产生一棵决策树
输入:训练样本samples;候选属性的集合attributelist
输出:一棵决策树
(1)创建根节点N;
(2)IF S都属于同一类C,则返回N为叶节点,标记为类C;
(3)IF attributelist为空或 S中所剩的样本数少于某给定值
(4)则返回N为叶节点,标记N为S中出现最多的类;
(5)FOR each attributelist中的属性
(6)计算信息增益率information gain ratio;
(7)N的测试属性test.attribute = attributelist具有最高信息增益率的属性;
(8)IF测试属性为连续型
(9)则找到该属性的分割阈值;
(10)For each由节点N一个新的叶子节点{
(11)If该叶子节点对应的样本子集S’为空
(12)则分裂此叶子节点生成新叶节点,将其标记为S中出现最多的类
(13)Else
在该叶子节点上执行C4.5formtree(S’, S’.attributelist),继续对它分裂;
}
(14)计算每个节点的分类错误,进行剪枝。 3、程序实现
PrintTree(T);//Display entire decision tree T
Show(T, Sh);// Display the tree T with offset Sh
ShowBranch(Sh, T, v);// Print a node T with offset Sh, branch value v, and continue
short MaxLine(St);// Find the maximum single line size for non-leaf subtree St.
ndent(Sh, Mark);// Indent Sh columns
SaveTree(T, Extension);// Save entire decision tree T in file with extension Extension
OutTree(T);// Save tree T as characters
Tree GetTree(Extension);// Retrieve entire decision tree with extension Extension
Tree InTree();//Retrieve tree from saved characters
StreamOut(s, n);// Stream characters to/from file TRf from/to an address
ReleaseTree(Node);// Free up space taken up by tree Node
Tree Leaf(ClassFreq, NodeClass, Cases, E
文档评论(0)