《数据挖掘》Weka实验报告姓名_学号_指导教师开课学期2015至2016学年2学期完成日期2015年6月12日11.实验目的基于的数据,使用数据挖掘中的分类算法,运用Weka平台的基本功能对数据集进行分类,对算法结果进行性能比较,画出性能比较图,另外针对不同数量的训练集进行对比实验,并画出性能比较图训练并测试。2.实验环境实验采用Weka平台,数据使用来自,主要使用其中的BreastCancerWisc-onsin(Original)DataSet数据。Weka是怀卡托智能分析系统的缩写,该系统由新西兰怀卡托大学开发。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),丛厚度;23.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数据分析由得到一组由逗号隔开的数据,复制粘贴至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所示:3(图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”,4“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(图5)(图6)在进行数据搜集和整理的过程中,我们发现如果属性的类型为数值型的话,在做关联分析时将不能得到结果,可以比较图3和图5,图3是数值型,图5是数据离散化之后的。因为关联分析无法处理数值型数据,因此,我们进行了数据离散处理后使得需要分析的数据变为分类型,这样就可以关联分析得以顺利进行。因此通过预处理数据可以提高原数据的质量,清除数据噪声和与挖掘目标无关的数据,为进一步的挖掘工作莫定可靠的基础。3.3数据分类算法针对这些有关乳腺癌数据集,主要分别采用的分类方法是决策树算法、K均值算法、朴素贝叶斯分类算法。由于该数据集有10个属性,则下文中对每个属性进行分类的步骤大致相同,由于篇幅原因,只截取其中两个属性,现在就所选截屏属性作申明,选第一项ClumpThickness(丛厚度))和第九项Mitoses(有丝分裂)。3.3.1决策树分类用“Explorer”打开刚才得到的“乳腺癌数据集.csv.arff”,并切换到“Class”。6点“Choose”按钮选择“tree(weka.classifiers.trees.j48)”,这是Weka中实现的决策树算法。选择Cross-Validatioinfolds=10,选择图中箭头指向选择属性,然后点击“start”按钮。得到结果如图7和图8所示:(图7)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-Validatioinfolds=10,同样选择图中箭头指向选择属性,然后点击“start”按钮:为了与上面决策树作比较,贝叶斯也选择第一项第一项Clump8Thickness丛厚度和第九项Mitoses有丝分裂项,得到结果如下图10,11所示:(图10)(图11)9这个是针对第一项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”按10钮选择“laze-ibk”,选择Cross-Validatioinfolds=10,然后点击“start”按钮:同样选择图中箭头指向选择属性,然后点击“start”按钮:为了与上面决策树和贝叶斯作比较,K最近邻算法分类也选择第一项ClumpThickness丛厚度和第九项Mitoses有丝分裂项,得到结果如下图13,14所示:(图13)11(图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的数据,Clump12Thickness(丛厚度)用三种算法正确分类个数分别为102个、198个、191个,正确分类率分别为26.03726%、28.3262%、27.3247%,,错误分类个数分别为517个、501个、508个,错误分类率分别为73.9268%、71.6738%、72.6753%。第九项Mitoses有丝分裂项用三种算法正确分类分别为579个、467个、546,正确率分别为82.832