南京信息工程大学滨江学院实验(实习)报告
实验(实习)名称基于划分方法的聚类分析实验(实习)日期 2011.6.10 指导教师闫雷鸣
专业软工(动画)年级 2008 班次(1)班姓名王圆媛学号 20082358002 得分
一、实验目的
(1)学习聚类分析的基本概念、各种数据类型、聚类方法的分类。
(2)学会典型的划分方法K均值和K中心点算法的基本原理、特点、优缺点。
(3)应用Weka软件,学会导入数据文件,并对数据文件进行预处理。
(4)学会并应用划分方法中K均值和K中心点算法对数据集进行聚类分析。
二、实验准备:
Bank-data
三、实验要求:
用划分方法中K均值和K中心点算法对数据集进行聚类分析
四、实验内容:
4.1 相关知识
聚类分析中的“类”(cluster)和前面分类的“类”(class)是不同的,对cluster更加准确的翻译应该是“簇”。
聚类的任务是把所有的实例分配到若干的簇,使得同一个簇的实例聚集在一个簇中心的周围,它们之间距离的比较近;而不同簇实例之间的距离比较远。
对于由数值型属性刻画的实例来说,这个距离通常指欧氏距离。
聚类分析中使用最常见的K均值(K-means)算法。
K均值聚类方法的步骤如下。
(1)K均值算法首先随机的指定K个簇中心。
(2)将每个实例分配到距它最近的簇中心,得到K个簇;
(3)计分别计算各簇中所有实例的均值,把它们作为各簇新的簇中心。
重复(2)和(3),直到K个簇中心的位置都固定,簇的分配也固定。
上述K均值算法只能处理数值型的属性,遇到分类型的属性时要把它变为若干个取值0和1的属性。
WEKA将自动实施这个分类型到数值型的变换,而且Weka会自动对数值型的数据作标准化。
Weka中列出了很多聚类算法。
对于EM实现,用户可指定需要产生多少聚类,否则所用的算法可通过交叉验证来决定,在这种情况下,折的数量固定为10(除非训练实例小于10个)。
用户可指定循环次数的最大值,并且为正常的密度计算设定可允许的最小标准差。
SimpleKMeans使用k均值来聚类数据;聚类的数量通过一个参数设定。
Cobweb实现了用于名词属性的Cobweb算法和用于数值性属性的Classit算法。
FarthestFirst实现Hochbaum 和Shmoys远端优先遍历算法。
MakeDensityBaseCluster是一个元聚类器,它包装一个聚类算法,使其返回一个概率分布和密度。
它为每个聚类拟合一个离散分布,或一个对称的正态
分布。
4.2 实验操作
(1)在开始程序(或者桌面图标)中找到WEKA3.6.2,单击即可启动WEKA,启动WEKA 时会发现首先出现的一个命令提示符。
接着将出现如下Weka GUI Chooser界面。
(2)选择GUI Chooser中的探索者(Explorer)用户界面。
点击预处理(Preprocess)功能按钮的,Open file,选择其中的“bank-data”数据作关联规则的分析。
打开“bank-data.csv”,可以看到“Current relation”、“Attributes”“Selected attribute”三个区域。
(3)对于原始数据“bank-data.csv”的预处,删去属性“id”,保存为ARFF格式后,修改属性“children”为分类型。
这样得到的数据文件为“bank.arff”,含600条实例。
(4)用“Explorer”打开刚才得到的“bank.arff”,并切换到“Cluster”选项卡。
点击“Choose”在随后打开的层级式菜单中的选择“SimpleKMeans”,这是WEKA中实现K均值的算法。
点击旁边的文本框,修改“numClusters”为6,说明我们希望把这600条实例聚成6类,即K=6。
下面的“seed”参数是要设置一个随机种子,依此产生一个随机数,用来得到K均值算法中第一次给出的K个簇中心的位置,先设定为10。
(7)选中“Cluster Mode”的“Use training set”,点击“Start”按钮,观察右边“Clusterer output”给出的聚类结果。
也可以在左下角“Result list”中这次产生的结果上点右键,“View in separate window”在新窗口中浏览结果。
(8)实验结果:
结果中有这么一行字样:
Within cluster sum of squared errors: 1604.7416683433223
这是评价聚类好坏的标准,数值越小说明同一簇实例之间的距离越小。
“seed”参数的变化,导致得到的这个数值也发生变化。
通过多尝试变化seed值,并取使得数值最小的seed 值。
接下来“Cluster centroids:”之后列出了各个簇中心的位置。
对于数值型的属性,簇中心就是它的均值(Mean);分类型的就是它的众数(Mode),也就是说这个属性上取值为众数值的实例最多。
对于数值型的属性,还给出了它在各个簇里的标准差(Std Devs)。
最后的“Clustered Instances”是各个簇中实例的数目及百分比。
为了观察可视化的聚类结果,在左下方“Result list”列出的结果上右击,点“Visualize cluster assignments”。
弹出的窗口给出了各实例的散点图。
最上方的两个框是选择横坐标和纵坐标,第二行的“color”是散点图着色的依据,默认是根据不同的簇“Cluster”给实例标上不同的颜色。
可以在这里点“Save”把聚类结果保存成ARFF文件。
在这个新的ARFF文件中,“instance_number”属性表示某实例的编号,“Cluster”属性表示聚类算法给出的该实例所在的簇。
4.3 扩展学习
(1)选择其他数据集来对其进行k-means聚类分析,并对其聚类结果进行分析研究。
(2)通过对其参数的修正完善加深理解k-means聚类分析算法。
五、实验总结
本次weka的运行实验进行的很顺利,通过它我学习了聚类分析的基本概念、各种数据类型、聚类方法的分类。
掌握了典型划分方法K均值和K中心点算法的基本原理、特点、优缺点。
学会并应用划分方法中K均值和K中心点算法对数据进行聚类分析。
爱人者,人恒爱之;敬人者,人恒敬之;宽以济猛,猛以济宽,政是以和。
将军额上能跑马,宰相肚里能撑船。
宽容就是忘却,人人都有痛苦,都有伤疤,动辄去揭,便添新创,旧痕新伤难愈合,忘记昨日的是非,忘记别人先前对自己的指责和谩骂,时间是良好的止痛剂,学会忘却,生活才有阳光,才有欢乐。
不要轻易放弃感情,谁都会心疼;不要冲动下做决定,会后悔一生。
也许只一句分手,就再也不见;也许只一次主动,就能挽回遗憾。
世界上没有不争吵的感情,只有不肯包容的心灵;生活中没有不会生气的人,只有不知原谅的心。
感情不是游戏,谁也伤不起;人心不是钢铁,谁也疼不起。
好缘分,凭的就是真心真意;真感情,要的就是不离不弃。
爱你的人,舍不得伤你;伤你的人,并不爱你。
你在别人心里重不重要,自己可以感觉到。
所谓华丽的转身,都有旁人看不懂的情深。
人在旅途,肯陪你一程的人很多,能陪你一生的人却很少。
谁在默默的等待,谁又从未走远,谁能为你一直都在?
这世上,别指望人人都对你好,对你好的人一辈子也不会遇到几个。
人心只有一颗,能放在心上的人毕竟不多;感情就那么一块,心里一直装着你其实是难得。
动了真情,情才会最难割;付出真心,心才会最难舍。
你在谁面前最蠢,就是最爱谁。
其实恋爱就这么简单,会让你智商下降,完全变了性格,越来越不果断。
所以啊,不管你有多聪明,多有手段,多富有攻击性,真的爱上人时,就一点也用不上。
这件事情告诉我们。
谁在你面前很聪明,很有手段,谁就真的不爱你呀。
遇到你之前,我以为爱是惊天动地,爱是轰轰烈烈抵死缠绵;我以为爱是荡气回肠,爱是热血沸腾幸福满满。
我以为爱是窒息疯狂,爱是炙热的火炭。
婚姻生活牵手走过酸甜苦辣温馨与艰难,我开始懂得爱是经得起平淡。