最近由于实际需要,要把以前看过的
算法
复习下,我基本每行代码都按自己的意思理解了下,不知道对不对,不过贴出重点部分,供大家围观。第一篇先找简单的下手,嘿嘿,
ID3
,来吧。<br /> /** 变量定义: */
/** 保存决策树节点的数组 */
private
Id3
[] m_Successors;
/** 分裂属性 */
private Attribute m_Attribute;
/** 叶子节点的分类 */
private doub
对于Percentage split选项,当你的数据集没有测试集时,可以通过设置右侧的数字来将你的数据集分为训练集和测试集,图
中
的数字为66,其代表将数据集66%的数据作为训练集,其余34%的数据作为测试集。3,找到自己
Weka
的安装目录,进入data文件夹,选择自己需要分类的数据集,当然也可以是外部数据集,但文件需要是arff类型文件,其它文件类型如何转为arff类型可参考。1,前面的操作和上面分类操作的步骤一样,导入数据集后进入到聚类的界面,需要注意的地方在下图
中
进行了标注。
整个
算法
实际就 makeTree和distributionForInstance两个函数,下面把代码附上来,想要执行的话请下在
weka
平台,里面包含依赖的类。
package
weka
.classifiers.trees;
先上问题吧,我们统计了14天的气象数据(指标包括outlook,temperature,humidity,windy),并已知这些天气是否打球(play)。如果给出新一天的气象指标数据:sunny,cool,high,TRUE,判断一下会不会去打球。
table 1
outlook
temperature
humidity
windy
sunny
ho...
ID3
算法
相对简单,
weka
的实现也容易理解。首先介绍一下大致
算法
。
算法
概述如下。
1.选择一种度量(
ID3
选择的是信息增益),计算每个属性对于该度量的值。
2.根据结果选择一个属性进行分支。
3.如果每个分支全部属于一个类或者已经没有候选属性。则停止,否则对每个分支进行1,2操作。
下面对
weka
的
ID3
class 作介绍,主要涉及到makeTree(Instances data),c
ID3
:归纳决策树(Induction Decision Tree Version 3)
ID3
算法
一种由数据构造递归的的过程。选择一个属性作为根节点,按照其他属性将数据集分类,每一个子节点得到一个数据集。对这种划分的质量进行评估,递归执行该过程,直至全部节点不能再进行划分。某节点不能划分的条件有2:一个是节点具有单类,二是节点具有单一属性。
质量评估的标准为:
①信息增益:根节点的信息值
//检验
算法
能否直接处理数据
getCapabilities().testWithFail(data); //删除带有缺失class标记的数据
data=new Instanc