源代码工程文件(vs2005)http://d.download.csdn.net/down/1018461/cctt_1
过去在网上找了段代码,发现写的代码要改些地方,而且也想顺便练习下自己的c++编码。
首先我要建立一个真正的树形结构。于是使用了自己过去的GeneralTree.h(当然这里还是改动些GeneralTree的代码例如增添了些函数,另外把有些私有函数变成了公有函数)。
训练文本格式如下:并命名为decision2.txt 并发在自己的工程目录下。当然你也可以改改相关源代码
概念 颜色 形状 轻重
苹果 红 球 一般
苹果 绿 球 一般
香蕉 黄 弯月 一般
草莓 红 球 轻
草莓 绿 球 轻
西瓜 绿 椭球 重
西瓜 绿 球 重
桔子 桔黄 椭球 轻
测试格式文本格式如下:命名为test.txt并放在工程目录下(试试改改源代码)
颜色 形状 轻重
红 球 一般
绿 球 一般
黄 弯月 一般
这里应该考虑各个类分开的。不过为了看起来方便,就合在一起了。
下面是具体代码:
这里的main函数这样写(自己使用的VS2005):
自己感觉DT 的注释比较详细,所以在我的blog中就不再做太多的解释。另外这段代码会将测试结果放在工程目录下的testResult.txt中。
另外在控制台上会有生成决策树ID3的相关相关的信息显示,例如:
红概率为:0.25
黄概率为:0.125
桔黄概率为:0.125
绿概率为:0.5
颜色的G为:1
球概率为:0.625
椭球概率为:0.25
弯月概率为:0.125
形状的G为:1.20121
轻概率为:0.375
一般概率为:0.375
重概率为:0.25
轻重的G为:0.688722
choose attribute:轻重
go into the branch:一般
红概率为:0.125
黄概率为:0.125
绿概率为:0.125
颜色的G为:0
球概率为:0.25
弯月概率为:0.125
形状的G为:0
..choose attribute:颜色
..go into the branch:红
....decision type:苹果
..go into the branch:绿
....decision type:苹果
..go into the branch:黄
....decision type:香蕉
..go into the branch:桔黄
....decision type:
go into the branch:轻
红概率为:0.125
桔黄概率为:0.125
绿概率为:0.125
颜色的G为:0
球概率为:0.25
椭球概率为:0.125
形状的G为:0
..choose attribute:颜色
..go into the branch:红
....decision type:草莓
..go into the branch:绿
....decision type:草莓
..go into the branch:黄
....decision type:
..go into the branch:桔黄
....decision type:桔子
go into the branch:重
..decision type:西瓜
这一段信息是什么意思呢?
红概率为:0.25
黄概率为:0.125
桔黄概率为:0.125
绿概率为:0.5
颜色的G为:1
红,黄,桔黄,绿的概率是颜色的具体属性。这里没有把entropy打印出来。如果此段代码被中科院的师弟师妹有幸看到,
你们可以在AttribDifferComputer()函数中添加几行代码就可以把每一个entropy打印出来。反正老师也会让你们看代码,这里就当作作业题吧。(另外老师第十章机器学习ppt上的决策树的这个例子计算结果有错误。如果你认真计算过的话)颜色G的含义是颜色G的决策值,决策值越小,选择此属性的概率就越大。
那决策树是什么样子的呢?
choose attribute:轻重
go into the branch:一般
..choose attribute:颜色
..go into the branch:红
......................
看看上面的这些.这里代表根节点是“轻重”,然后进入“一般”分支,然后进入“一般”分支的节点为颜色..然后进入”红“分支.这里一定要注意”..“,相等的"..”代表树的相同的层次。
做出这个Decision Tree 的ID3代码主要是为了学弟学妹们在考试中测试用的。因为我只是测试了老师ppt中的例子,不保证对于所有的例子都正确。而且老师出的考试题比较变态(属性十个左右)..如果手工计算应该需要一个小时左右的时间。
当初后悔没有先编一个程序。祝各位考试顺利..(我想我这段代码可能会在考试之前被搜到)。
同时提醒大家一点, ID3也不是什么很好的算法。当两个属性的G值一致时,如果它并不能给出一个更好的判断标准。而且如果采用顺序选择很有可能生成一个非最小决策树。这点还值得研究一下。
分享到:
相关推荐
关于人工智能中决策树的源代码,决策树采用ID3算法生成
决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画...
用Java写的决策树ID3算法,训练集和测试数据都是用的米歇尔的《机器学习》中的例子。
人工智能决策树实验,为了让同学们更好的学习决策树,了解人工智能,请大家参考
决策树分类(ID3,C4.5,CART) 三种算法的区别如下: (1) ID3算法以信息增益为准则来进行选择划分属性,选择信息增益最大的; (2) C4.5算法先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率...
习题6.12决策树ID3算法实现,输出决策树和决策树对应的规则集。
很好的ID3算法实例,以经典的天气-网球问题为例,很容易改编成适用于其他例子的决策树算法
已知:UCI标准数据集Car-Evaluation,定义了汽车性价比的4 个类别;...求:用ID3算法建立Car-Evaluation的属性描述决策树 Car-Evaluation训练数据集文件: 1. car_databases.pdf 2. car_evalution-databases.pdf
用python编写的决策树ID3算法,运用了Car-Evaluation的例子。BUG较少,综合了网上的优秀代码,并进一步形成自己的代码。代码基本有注释,风格良好,能够很快看懂。内含有比较规范的报告文档,包含所有流程图,说明图...
决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画...
ID3,C4.5决策树完整代码以及结果图片
以下数据集是经过确认的西瓜属性,请根据这些信息,利用决策树方法判定另外一批西瓜的质量。 1.学习有关决策树的相关知识 2.构建每个属性的信息增益,并写入到文件Gain.txt中 3.绘制决策树,保存成文件, Decision_...
决策树ID3算法机器学习中,决策树是一个预测模型;它代表的是对象属性值与对象值之间的一种映射关系。树中每个节点表示某个对象,每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应具有上述属性值的子对象...
决策树算法ID3的代码实验,编译后可直接使用的ID3代码,欢迎下载
使用C5.0决策树识别高风险银行贷款,代码,通过R语言实现。
卡内基梅隆大学的人工智能库中的“AI C++ 搜索类库”。C++搜索类库是一个用来进行问题求解的C++代码包。基于此类库,当开发问题求解的软件时,程序员可以专注于待解问题的表达,而不必去关心搜索算法的实现。该类库...
人工智能西瓜数据集——决策树
数据挖掘课设关于决策树算法的实验报告
通过该代码读者能够掌握机器学习课程中对率回归决策树的基本绘制方法,能够根据自己的需求快速的更换数据集,具有一定的应用价值。 不足 对于正确率相同的节点,选取优先遍历的属性作为根节点,与基于信息增益进行...
决策树(Decision Tree)是监督学习中的一种算法,并且是一种基本的分类与回归的方法 决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过...3.使用决策树进行分类 4.使用SKlearn中graphviz包实现决策树的绘制