您好,欢迎访问三七文档
DW&DM课程实验报告学院:商学院班级:信管11-1姓名:秦瑶学号:201108071092一、实验目的:使用数据挖掘中的分类算法、聚类分析、关联规则分析对数据集进行分类训练并验证。二、实验内容:1.学习用WEKA进行聚类分析的操作方法2.学习用WEKA进行关联规则分析的操作3.学会一种分类方法的操作三、实验步骤一、聚类分析(1)数据准备1.数据文件格式转换使用WEKA作数据挖掘,面临的第一个问题往往是我们的数据不是ARFF格式的。幸好,WEKA还提供了对CSV文件的支持,而这种格式是被很多其他软件,比如Excel,所支持的。现在我们打开“bank-data.csv”。利用WEKA可以将CSV文件格式转化成ARFF文件格式。ARFF格式是WEKA支持得最好的文件格式。此外,WEKA还提供了通过JDBC访问数据库的功能。2.“Explorer”界面“Explorer”提供了很多功能,是WEKA使用最多的模块。3.bank-data数据各属性的含义如下:id:auniqueidentificationnumberage:ageofcustomerinyears(numeric)sex:MALE/FEMALEregion:inner_city/rural/suburban/townincome:incomeofcustomer(numeric)married:isthecustomermarried(YES/NO)children:numberofchildren(numeric)car:doesthecustomerownacar(YES/NO)save_act:doesthecustomerhaveasavingaccount(YES/NO)current_act:doesthecustomerhaveacurrentaccount(YES/NO)mortgage:doesthecustomerhaveamortgage(YES/NO)pep:didthecustomerbuyaPEP(PersonalEquityPlan,个人参股计划)afterthelastmailing(YES/NO)上图显示的是“Explorer”打开“bank-data.csv”的情况。(2)聚类的任务是把所有的实例分配到若干的簇,使得同一个簇的实例聚集在一个簇中心的周围,它们之间距离的比较近;而不同簇实例之间的距离比较远。现在我们对前面的“Fund-data-normal”作聚类分析,使用最常见的K均值(K-means)算法。运行WEKA的主程序,我们点击进入“SimpleCLI”模块提供的命令行功能。在D盘下进行转换,在新窗口的最下方输入框写上javaweka.core.converters.CSVLoaderD:/Fund-data.csvD:/Fund-data.csv.arff即可完成转换,生成文件“D:/Fund-data.csv.arff”。用“Explorer”打开训练集“Fund-data-normal.arff”。用“Explorer”打开刚才得到的“Fund-data-normal.arff”,并切换到“Cluster”。点“Choose”按钮选择“SimpleKMeans”,这是WEKA中实现K均值的算法。点击旁边的文本框,修改“numClusters”为6,说明我们希望把这734条实例聚成6类,即K=5。下面的“seed”参数是要设置一个随机种子,依此产生一个随机数,用来得到K均值算法中第一次给出的K个簇中心的位置。我们不妨暂时让它就为10。选中“ClusterMode”的“Usetrainingset”,点击“Start”按钮,观察右边“Clustereroutput”给出的聚类结果。见下图(3)本次实验采用的数据文件是Fund-data-normal,通过观察本次实验的实验结果观察,我们可以知道:Numberofiterations:5,意味着本次实验把这734条实例聚成了6类,即K=5和Withinclustersumofsquarederrors。这是评价聚类好坏的标准,数值越小说明同一簇实例之间的距离越小。如果把“seed”参数改一下,得到的这个数值就可能会不一样。我们应该多尝试几个“seed”,并采纳这个数值最小的那个结果。Clustercentroids:之后列出了各个簇中心的位置。对于数值型的属性,簇中心就是它的均值(Mean);分类型的就是它的众数(Mode)。对于数值型的属性,还给出了它在各个簇里的标准差(StdDevs)。最后的“ClusteredInstances”是各个簇中实例的数目及百分比。二、关联规则(1)数据准备看我们的购物清单示例(basket.txt):freshmeatdairyconfectioneryfreshmeatconfectionerycannedvegfrozenmealbeerfishdairywinefreshmeatwinefishfruitvegsoftdrinkbeerfruitvegfrozenmealfruitvegfishfruitvegfreshmeatdairycannedvegwinefishfruitvegfishdairycannedmeatfrozenmealfish数据集的每一行表示一个去重后的购物清单,进行关联规则挖掘时,我们可以先把商品名字映射为id号,挖掘的过程只有id号就是了,到规则挖掘出来之后再转回商品名就是了,retail.txt是一个转化为id号的零售数据集,数据集的前面几行如下:01234567891011121314151617181920212223242526272830313233343536373839404142434445463839474838394849505152535455565758324159606162339486364656667683269这个数据集的商品有16469个,一个购物的商品数目远少于商品中数目,因此要用稀疏数据表,weka支持稀疏数据表示,但我在运用apriori算法时有问题,先看一下weka的稀疏数据要求:稀疏数据和标准数据的其他部分都一样,唯一不同就是@data后的数据记录,示例如下(basket.arff):@relation'basket'@attributefruitveg{F,T}@attributefreshmeat{F,T}@attributedairy{F,T}@attributecannedveg{F,T}@attributecannedmeat{F,T}@attributefrozenmeal{F,T}@attributebeer{F,T}@attributewine{F,T}@attributesoftdrink{F,T}@attributefish{F,T}@attributeconfectionery{F,T}@data{1T,2T,10T}{1T,10T}{3T,5T,6T,9T}{2T,7T}{1T,7T,9T}{0T,8T}{6T}{0T,5T}{0T,9T}{0T,1T,2T,3T,7T,9T}{0T,9T}{2T,4T,5T,9T}可以看到freshmeatdairyconfectioneryfreshmeatconfectionery表示为了:{1T,2T,10T}{1T,10T稀疏数据的表示格式为:{属性列号空格值,...,属性列号空格值},注意每条记录要用大括号,属性列号不是id号,属性列号是从0开始的,即第一个@attribute后面的属性是第0个属性,T表示数据存在。(2)选择关联规则挖掘,选择算法设置参数参数主要是选择支持度(lowerBoundMinSupport),规则评价机制metriType(见上一篇)及对应的最小值,参数设置说明如下[2]:1.car如果设为真,则会挖掘类关联规则而不是全局关联规则。2.classindex类属性索引。如果设置为-1,最后的属性被当做类属性。3.delta以此数值为迭代递减单位。不断减小支持度直至达到最小支持度或产生了满足数量要求的规则。4.lowerBoundMinSupport最小支持度下界。5.metricType度量类型。设置对规则进行排序的度量依据。可以是:置信度(类关联规则只能用置信度挖掘),提升度(lift),杠杆率(leverage),确信度(conviction)。在Weka中设置了几个类似置信度(confidence)的度量来衡量规则的关联程度,它们分别是:a)Lift:P(A,B)/(P(A)P(B))Lift=1时表示A和B独立。这个数越大(1),越表明A和B存在于一个购物篮中不是偶然现象,有较强的关联度.b)Leverage:P(A,B)-P(A)P(B)Leverage=0时A和B独立,Leverage越大A和B的关系越密切c)Conviction:P(A)P(!B)/P(A,!B)(!B表示B没有发生)Conviction也是用来衡量A和B的独立性。从它和lift的关系(对B取反,代入Lift公式后求倒数)可以看出,这个值越大,A、B越关联。6.minMtric度量的最小值。7.numRules要发现的规则数。8.outputItemSets如果设置为真,会在结果中输出项集。9.removeAllMissingCols移除全部为缺省值的列。10.significanceLevel重要程度。重要性测试(仅用于置信度)。11.upperBoundMinSupport最小支持度上界。从这个值开始迭代减小最小支持度。12.verbose如果设置为真,则算法会以冗余模式运行。(3)设置好参数后点击start运行可以看到Apriori的运行结果:FPGrowth运行的结果是一样的:每条规则都带有出现次数、自信度、相关度等数值。三、分类WEKA中的“Classify”选项卡中包含了分类(Classification)和回归(Regression),在这两个任务中,都有一个共同的目标属性(输出变量)。可以根据一个样本(WEKA中称作实例)的一组特征(输入变量),对目标进行预测。为了实现这一目的,我们需要有一个训练数据集,这个数据集中每个实例的输入和输出都是已知的。观察训练集中的实例,可以建立起预测的模型。有了这个模型,我们就可以新的输出未知的实例进行预测了。衡量模型的好坏就在于预测的准确程度。在WEKA中,待预测的目标(输出)被称作Class属性,这应该是来自分类任务的“类”。一般的,若Class属性是分类型时我们的任务才叫分类,Class属性是数值型时我们的任务叫回归。而我们使用决策树算法C4.5对Fund-data-normal建立起分类模型。因此我们制作分类不做回归。我们用“Explorer”打开训练集“Fund-data-normal.arff”,。切换到“Classify”选项卡,点击“Choose”按钮后可以看到很多分类或者回归的算法分门别类的列在一个树型框里。树型框下方有一个“Filter...”按钮,点击后勾选“Binaryattributes”“Numericattributes”和“Binaryclass”。点“OK”后回到树形图,可以发现一些算法名称变灰了,说明它们不能用。选择“trees”下的“J48”,这就是我们需要的C4.5算法。点击“Choose”右边的文本框,弹出新窗口为该算法设置各种参数。我们把参数保持默认。选上“Cross-validation”并在“Folds”框填上“10”。点“Start”按钮开始让算法生成决策树模型。很快,用文本表示的一棵决策树以及对这个决策树的误差分析结果出现在右边“Classifieroutput”中。四、实验总结通过本次数据挖掘实验,重新学习了一下数据挖掘的相关概念和知识,理解了数据挖掘的用途和使用步骤;进一步学习了WEKA开源数据挖掘工具在数据挖掘学习中的使用方法。并且对
本文标题:wake实验报告
链接地址:https://www.777doc.com/doc-7241572 .html