数据挖掘实验报告Word格式.docx
《数据挖掘实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《数据挖掘实验报告Word格式.docx(20页珍藏版)》请在冰点文库上搜索。
Weka使用Java写成的,并且限制在GNU通用公共证书的条件下发布。
它可以运行于几乎所有操作平台,是一款免费的,非商业化的机器学习以及数据挖掘软件。
Weka提供了一个统一界面,可结合预处理以及后处理方法,将许多不同的学习算法应用于任何所给的数据集,并评估由不同的学习方案所得出的结果。
3.实验步骤
3.1数据预处理
本实验是针对威斯康辛州(原始)的乳腺癌数据集进行分类,该表含有Samplecodenumber(样本代码),ClumpThickness(丛厚度),UniformityofCellSize(均匀的细胞大小),UniformityofCellShape(均匀的细胞形状),MarginalAdhesion(边际粘连),SingleEpithelialCellSize(单一的上皮细胞大小),BareNuclei(裸核),BlandChromatin(平淡的染色质),NormalNucleoli(正常的核仁),Mitoses(有丝分裂),Class(分类),其中第二项到第十项取值均为1-10,分类中2代表良性,4代表恶性。
通过实验,希望能找出患乳腺癌客户各指标的分布情况。
该数据的数据属性如下:
1.Samplecodenumber(numeric),样本代码;
2.ClumpThickness(numeric),丛厚度;
3.UniformityofCellSize(numeric)均匀的细胞大小;
4.UniformityofCellShape(numeric),均匀的细胞形状;
5.MarginalAdhesion(numeric),边际粘连;
6.SingleEpithelialCellSize(numeric),单一的上皮细胞大小;
7.BareNuclei(numeric),裸核;
8.BlandChromatin(numeric),平淡的染色质;
9.NormalNucleoli(numeric),正常的核仁;
10.Mitoses(numeric),有丝分裂;
11.Class(enum),分类。
3.2数据分析
由archive.ics.uci.edu/ml/datasets/Breast+Cancer+WiscOnsin+%28Ori-
ginal%29得到一组由逗号隔开的数据,复制粘贴至excel表中,选择数据——分列——下一步——逗号——完成,该数据是有关乳腺癌数据集,有11个属性,分别为Samplecodenumber(样本代码),ClumpThickness(丛厚度),UniformityofCellSize(均匀的细胞大小),UniformityofCellShape(均匀的细胞形状),MarginalAdhesion(边际粘连),SingleEpithelialCellSize(单一的上皮细胞大小),BareNuclei(裸核),BlandChromatin(平淡的染色质),NormalNucleoli(正常的核仁),Mitoses(有丝分裂),Class(分类),因为复制粘贴过来的数据没有属性,所以手工添加一行属性名。
Weka分类数据需把excel保存为一个csv文件。
3.2.1.csv->
.arff
将CSV转换为ARFF最迅捷的办法是使用WEKA所带的命令行工具。
打开weka,之后出现GUI界面,如图1所示:
(图1)
点击进入“Exploer”模块,要将.csv格式转换为.arff格式,点击openfile...,打开刚保存的“乳腺癌数据集.csv”,点击“Save...”,将文件保存为“乳腺癌数据集.csv.arff”如图2所示:
(图2)
图3中显示的是使用“Exploer”打开“乳腺癌数据集.csv.arff”的情况.如图3所示:
(图3)
3.2.2数据预处理
很明显发现,所用的数据都是(numeric)数值型的,需要将数值型离散化,将“ClumpThickness”,“UniformityofCellSize”,“UniformityofCellShape”,“MarginalAdhesion”,“MarginalAdhesion”,“BareNuclei”,“BlandChromatin”,“NormalNucleoli”,“Mitoses”,“Class”离散化。
我们需要借助Weka中名为“Discretize”的Filter来完成。
在区域2中点“Choose”,出现一棵“Filter树”,逐级找到“weka.filters.unsupervised.attribute
.Discretize”点击,即可得到如下所示的图,如图4所示:
(图4)
现在“Choose”旁边的文本框应该显示“Discretize-B10-M-0.1-Rfirst-last”。
如图箭头所示,点击这个文本框会弹出新窗口以修改离散化的参数。
我们需将第1,2,3,4,5,6,7,8,9,10项离散化,其中第一项为id,可移除。
把attributeIndices右边改成“1,2,3,4,5,6,7,8,9,10”。
我们把这两个属性都分成10段,于是把“bins”改成“10”。
其它不变。
点“OK”回到“Explorer”,可以看到“ClumpThickness”,“UniformityofCellSize”,“UniformityofCellShape”,“MarginalAdhesion”,“MarginalAdhesion”,“BareNuclei”,“BlandChromatin”,“NormalNucleoli”,“Mitoses”,已经被离散化成分类型的属性。
经移除后剩10项属性,其中一项如图5所示,10项属性可视化如图6所示:
(图5)
(图6)
在进行数据搜集和整理的过程中,我们发现如果属性的类型为数值型的话,在做关联分析时将不能得到结果,可以比较图3和图5,图3是数值型,图5是数据离散化之后的。
因为关联分析无法处理数值型数据,因此,我们进行了数据离散处理后使得需要分析的数据变为分类型,这样就可以关联分析得以顺利进行。
因此通过预处理数据可以提高原数据的质量,清除数据噪声和与挖掘目标无关的数据,为进一步的挖掘工作莫定可靠的基础。
3.3数据分类算法
针对这些有关乳腺癌数据集,主要分别采用的分类方法是决策树算法、K均值算法、朴素贝叶斯分类算法。
由于该数据集有10个属性,则下文中对每个属性进行分类的步骤大致相同,由于篇幅原因,只截取其中两个属性,现在就所选截屏属性作申明,选第一项ClumpThickness(丛厚度))和第九项Mitoses(有丝分裂)。
3.3.1决策树分类
用“Explorer”打开刚才得到的“乳腺癌数据集.csv.arff”,并切换到“Class”。
点“Choose”按钮选择“tree(weka.classifiers.trees.j48)”,这是Weka中实现的决策树算法。
选择Cross-Validatioin
folds=10,选择图中箭头指向选择属性,然后点击“start”按钮。
得到结果如图7和图8所示:
(图7)
(图8)
这个是针对第一项ClumpThickness丛厚度和第九项Mitoses有丝分裂项运用C4.5决策算法得到误差分析的结果,分析可知总共有699个数据进行分类,ClumpThickness(丛厚度)其中102个为正确分类,正确分类率为26.03726%,517个为错误分类,错误分类为73.9268%。
而第九项Mitoses有丝分裂项也是分析699个数据,其中正确分类有579个数据,正确率为82.8326%,错误分类的有120个,错误分类的有17.1674%。
根据混淆矩阵,被错误分类实例很多,错综复杂,如图9所示:
(图9)
3.3.2贝叶斯分类
在刚才进行决策树分类的的那个页面,点“Choose”按钮选择“bayes”,再选择Cross-Validatioin
folds=10,同样选择图中箭头指向选择属性,然后点击“start”按钮:
为了与上面决策树作比较,贝叶斯也选择第一项第一项ClumpThickness丛厚度和第九项Mitoses有丝分裂项,得到结果如下图10,11所示:
(图10)
(图11)
这个是针对第一项ClumpThickness丛厚度和第九项Mitoses有丝分裂项运用贝叶斯算法得到误差分析的结果,分析可知总共有699个数据进行分类,ClumpThickness(丛厚度)其中198个为正确分类,正确分类率为28.3262%,501个为错误分类,错误分类为71.6738%。
而第九项Mitoses有丝分裂项其中正确分类有467个数据,正确率为66.8097%,错误分类的有232个,错误分类的有33.1903%。
根据混淆矩阵,被错误分类实例很多,相对来说,ClumpThickness丛厚度用两种方法混淆程度差不多,错综复杂,而Mitoses有丝分裂项用贝叶斯分类明显混淆矩阵要比用决策树方法混淆率要低,中间第六项到就第九项明显混响不是很多,如图12所示。
基于以上两种分析,建议用贝叶斯分类方法分类,降低混淆率,提高正确率。
(图12)
3.3.3K最近邻算法分类
在刚才进行决策树分类和贝叶斯分类的的的那个页面,点“Choose”按钮选择“laze->
ibk”,选择Cross-Validatioin
folds=10,然后点击“start”按钮:
同样选择图中箭头指向选择属性,然后点击“start”按钮:
为了与上面决策树和贝叶斯作比较,K最近邻算法分类也选择第一项ClumpThickness丛厚度和第九项Mitoses有丝分裂项,得到结果如下图13,14所示:
(图13)
(图14)
这个是针对第一项ClumpThickness丛厚度和第九项Mitoses有丝分裂项运用K最近邻算法得到误差分析的结果,分析可知总共有699个数据进行分类,ClumpThickness(丛厚度)其中191个为正确分类,正确分类率为27.3247%,508个为错误分类,错误分类为72.6753%。
而第九项Mitoses有丝分裂项其中正确分类有546个数据,正确率为78.1116%,错误分类的有153个,错误分类的有21.8884%。
根据混淆矩阵,被错误分类实例很多,相对来说,ClumpThickness丛厚度与前两个算法混淆程度差不多,错综复杂,甚至比前两个更要复杂,而Mitoses有丝分裂项用K最近邻算法明显混淆矩阵要比用决策树方法和贝叶斯方法混淆率要低,中间第四项到就最后明显混响不是很多,如图15所示:
(图15)
3.4三种分类方法结果比较
综上所述,分析三种算法的正确率和错误率,同样针对699的数据,ClumpThickness(丛厚度)用三种算确分类个数分别为102个、198个、191个,正确分类率分别为26.03726%、28.3262%、27.3247%,,错误分类个数分别为517个、501个、508个,错误分类率分别为73.9268%、71.6738%、72.6753%。
第九项Mitoses有丝分裂项用三种算确分类分别为579个、467个、546,正确率分别为82.8326%、66.8097%、78.1116%,错误分类的分别为120个、232个、153个,错误分类的有17.1674%、33.1903%、21.8884%。
为便于比较,将上述数据统一下表中,如表1所示:
决策树
贝叶斯
K最近邻算法
ClumpThickness正确率
26.03726%
28.3262%
27.3247%,
ClumpThickness标准误差
0.3109
0.3119
0.3227
Mitoses正确率
82.8326%
66.8097%
78.1116%
Mitoses标准误差
0.1755
0.2104
0.1989
(表1)
比较结果分析:
根据上述数据,我们模型好坏的评价标准Rootmeansquarederror(均方差):
越小越好。
针对ClumpThickness(丛厚度),贝叶斯不仅有最高的准确率和相对较好的标准误差,而且比较三种分类方法的混淆矩阵(如图9、12、15),混淆率相对来说也是最低的,其他两种方法的正确率都不及贝叶斯高,而且其他属性也可能错综复杂。
针对Mitoses(有丝分裂),决策树方法不仅有最高的完美正确率,而且有较好的标准误差,但这种完美的背后,很有可能是以其他属性较大错误率作为代价,这点可以从三个分类算法的混淆矩阵中得到印证(如图9、12、15);
而朴素贝叶斯分类算法的准确率相对较低,而标准误差也较高,综合评价可以得知,当前最好的分类算法是K最近邻算法。
综上所述:
针对ClumpThickness(丛厚度)分类,选择贝叶斯分类算法,而Mitoses(有丝分裂)选择K最近邻算法。
(其中ClumpThickness标准误差和Mitoses标准误差如下图16,17所示)。
(图16)
(图17)
4.三种算法在进行测试的性能比较
要进行性能比较,则需比较这10项属性的预测,同上文一样,这里只比较第一项ClumpThickness丛厚度和第九项Mitoses有丝分裂项,点“moreoptions...”按钮,选勾选“outprediction”,其他不勾选,然后点击“OK”按钮如图18所示:
(图18)
得到性能测试结果如下,图19分别为第一项ClumpThickness丛厚度用决策树方法、贝叶斯、K最近邻算法预测的结果,图20分别为第九项Mitoses有丝分裂项用决策树方法、贝叶斯、K最近邻算法预测的结果,由于数据属性的项很多且数据量很大,主要截取了前25项左右的结果。
结果如下:
(图19)
分析第一项ClumpThickness丛厚度。
性能分析应该包括两个部分,一个部分是测试速度,另一个部分是测试的质量。
由于本次使用所使用的数据量一般,不是很多,在测试速度的对比上相差太少,无法进行准确的分析。
而在测试质量上,可以从上述数据中很明显得到,在“error”(错误项),决策树和K最近邻算法很多加号,这说明错误率很大,从而导致分类质量的降低;
而对于“probabilitydistribution”(概率分布项),决策树和K最近邻算法分布很混乱,前六项属性的概率分布波动较大,而贝叶斯与其相比,“error”(错误项)几乎无“+”,说明其错误率相对其他两种方法,贝叶斯的错误率降低很多,而且在“probabilitydistribution”(概率分布项),上,分布很整齐,所以从性能角度上讲,贝叶斯算法略胜一筹。
(图20)
观察图20,分析第九项Mitoses有丝分裂项,同分析第一项ClumpThickness丛厚度一样。
在测试速度的对比上相差太少,无法进行准确的分析。
而在测试质量上,可以从上述数据中很明显得到,在“error”(错误项),决策树与贝叶斯相比,明显决策树加号要多,这说明决策树算法错误率很大,从而导致分类质量的降低,而比较贝叶斯和K最近邻算法,“error”(错误项)贝叶斯错误率明显比K最近邻算法要多,而对于“probabilitydistribution”(概率分布项),贝叶斯与K最近邻算法分布相对混乱,对于K最近邻算法,第一项属性ClumpThickness丛厚度的所有概率分布大致相同,对于第3、5、11、12...项数据,分布很整齐。
所以从性能角度上讲,K最近邻算法略胜一筹。
5.实验总结
以上实验是对BreastCancerWisconsin(Original)DataSet数据做了一些分析,通过本次数据挖掘实验,重新学习了一下数据挖掘的相关概念和知识,理解了数据挖掘的用途和使用步骤,进一步学习了WEKA开源数据挖掘工具在数据挖掘学习中的使用方法。
通过本次实验,也认识到了数据挖掘对大量的数据进行探索后,能揭示出其中隐藏着的规律性容,并且由此进一步形成模型化的分析方法。
可以建立整体或某个业务过程局部的不同类型的模型,可以描述发展的现状和规律性,而且可以用来预测当条件变化后可能发生的状况。
这可以为后续的研究提供更好的支持依据。
本次实验进行比较顺利,使我对如何在Weka中进行分类分析有了更深刻的了解,对Weka中进行分类分析的决策树算法、贝叶斯算法、K最近邻算法都有了进一步的理解,同时也深刻体会到数据预处理对于数据挖掘的重要性。