《数据挖掘基础》实验:Weka平台实现分类算法

实验目的

进一步理解分类算法(决策树、贝叶斯),利用weka实现数据集的分类处理,学会调整模型参数,以图或树的形式给出挖掘结果,并解释规则的含义。

实验要求

随机选取数据集(UCI或data文件夹),完成以下内容:(用三种方法:KNN、C4.5算法、贝叶斯算法)

  • 文件导入与编辑
  • 参数设置说明
  • 结果截图
  • 结果分析与对比

实验过程

1. 文件导入与编辑

单击Open file,选择自带数据集中的“iris.arff”数据集,数据集如图1所示。

《数据挖掘基础》实验:Weka平台实现分类算法_第1张图片

图1 iris数据集

对于iris数据集,它包含了150个实例(每个分类包含50个实例),共有sepal1ength、sepal width、petal length、petal width和class五种属性。期中前四种属性为数值类型,class属性为分类属性,表示实例所对应的的类别。该数据集中的全部实例共可分为三类:Iris Setosa、Iris Versicolour和Iris Virginica。
实验数据集中所有的数据都是实验所需的,不存在属性筛选的问题。

2. 参数设置说明

2.1 KNN算法

单击Classify->choose->lazy->IBK选择KNN算法,如图2所示。

《数据挖掘基础》实验:Weka平台实现分类算法_第2张图片

图2 KNN算法选择

单击choose右侧的文本框,弹出参数设置窗口,如下图所示。

《数据挖掘基础》实验:Weka平台实现分类算法_第3张图片

图3 KNN算法参数设置

KNN的值即算法中k的值,该值的选择会对算法的结果产生重大影响。
如果k值较小,就相当于用较小邻域中的训练实例进行预测,极端情况下k=1,测试实例只和最接近的一个样本有关,训练误差很小(0),但是如果这个样本恰好是噪声,预测就会出错,测试误差很大。也就是说,当k值较小时,会产生过拟合的现象。
如果k值较大,就相当于用很大邻域中的训练实例进行预测,极端情况是k=n,测试实例的结果是训练数据集中实例最多的类,这样会产生欠拟合。
在应用中,一般选择较小k并且k是奇数。通常采用交叉验证的方法来选取合适的k值,经过多次验证,选择合适的k值为7。

2.2 C4.5算法

单击Classify->choose->trees->J48选择C4.5算法,如图4所示。

《数据挖掘基础》实验:Weka平台实现分类算法_第4张图片

图4 C4.5算法选择

单击choose右侧的文本框,弹出参数设置窗口,如下图所示。

《数据挖掘基础》实验:Weka平台实现分类算法_第5张图片

图5 C4.5 算法参数设置
  • confidenceFactor为置信度,设为0.25。
  • minNumObj表示决策树里每个决策节点最少需要的实例个数。越大则模型复杂度越低,也越不容易过拟合。

2.3 贝叶斯算法

单击Classify->choose->bayes->NaiveBayes选择贝叶斯算法,如图6所示。

《数据挖掘基础》实验:Weka平台实现分类算法_第6张图片

图6 贝叶斯算法选择

单击choose右侧的文本框,弹出参数设置窗口,如下图所示。

《数据挖掘基础》实验:Weka平台实现分类算法_第7张图片

图7 贝叶斯算法参数设置

结果截图

1. KNN算法

分类结果如图8所示,可知正确率为96.6667%,其中150个实例中的145个被正确分类,5个被错误分类。根据混淆矩阵,被错误分类实例的为: 2个c类实例被错误分类到b,3个b类实例被错误分类到c。

《数据挖掘基础》实验:Weka平台实现分类算法_第8张图片

图8 KNN算法结果

2. C4.5算法

分类结果如图9所示,可知准确率为96%,其中150个实例中的144个被正确分类,6个被错误分类。根据混淆矩阵,被错误分类实例的为:2个b类实例被错误分类到c,1个b类实例被错误分类到a;3个c类实例被错误分类到b。生成的决策树为图10。

《数据挖掘基础》实验:Weka平台实现分类算法_第9张图片

图9 C4.5算法结果

《数据挖掘基础》实验:Weka平台实现分类算法_第10张图片

图10 决策树

3. 贝叶斯算法

分类结果如图11所示,可知准确率为96%,其中150个实例中的144个被正确分类,6个被错误分类。根据混淆矩阵,被错误分类实例的为:2个c类实例被错误分类到b,4个b类实例被错误分类到c。

《数据挖掘基础》实验:Weka平台实现分类算法_第11张图片

图11 贝叶斯算法结果

结果分析

对于该数据集,KNN算法准确率更高,但K值的选择是个难点,较好的K值可以带来较优的结果,反之亦然。C4.5算法与朴素贝叶斯算法准确率相同,但贝叶斯算法在对不同实例错误分类较为不均匀,而C4.5算法则对b、c错误分类个数较为均匀,这在一定程度上会影响分类结果,如果侧重于实例c的分类则贝叶斯算法较好,而实例b则C4.5算法较好。

你可能感兴趣的:(数据挖掘原理,数据挖掘,分类,机器学习,c4.5算法,KNN)