1、基于K-均值的Iris数据聚类分析姓名谢稳学号1411010122班级信科14-1成绩基于K-均值的Iris数据聚类分析姓名:谢稳信息与计算科学14-1班摘要数据挖掘在当今大数据新起的时代是一项必须掌握的技能,聚类分析是数据挖掘技术中一项重要的研究课题,在很多领域都有具有广泛的应用,如模式识别、数据分析等。聚类分析的目的是将数据对象分成若干个类或簇,使得在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象之间相似度较低5通过聚类分析,人们能够识别出数据分布密集和稀疏的区域,发现全局的分布模式以及数据属性之间一些意想不到的相互关系。本文对R.A.Fisher在1936年发表的Iris数据进行
2、数据挖掘,使用聚类分析中的K-Means对该问题进行进一步分析研究。实验证明两种方法都是适合的解决此类问题的。关键词Iris数据;聚类分析;K-均值聚类.0前言本文对聚类分析的原理进行阐述,并聚类分析中的谱系聚类法和K-means对R.A.Fisher的Iris数据进行了数据分析,得到了几乎相同的结论,数据量太少,回带误差大约是20%。1数据分析预处理1.1数据来源分析的数据来自R.A.Fisher在1936年发表的Iris数据(见附录B表B.1),据表可知前50个数据为牵牛一类,再50个数据为杂色一类,后50个数据为锦葵一类。将数据样本X变量放入matlab变量名X,保存为matlab的hu
3、aban.mat文件。1.2数据分析采用谱系聚类分析方法和K-means聚类法解决例如Iris类的分类等问题。2聚类分析2.1聚类的概述聚类分析是研究对样品或指标进行分类的一种多元统计方法,是依据研究对象的个体的特征进行分类的方法;聚类分析把分类对象按一定规则分成若干类,这些类非事先指定的,而是根据数据特征确定的。在同一类中这些对象在某种意义上趋向于彼此相似,而在不同类中趋向于不相似;职能是建立一种能按照样品或变量的相似程度进行分类的方法。聚类准则为“亲者相聚,疏者相分”。2.2.1 2.2分类R型聚类分析R型聚类分析是对变量(指标)的分类,其主要作用:不但可以了解个别变量之间的亲疏程度,而且
4、可以了解各个变量组合之间的亲疏程度。2.2.2 Q型聚类分析Q型聚类分析是对样品的分类,其主要作用:可以综合利用多个变量的信息对样本进行分析;分类结果直观,聚类谱系图清楚地表现数值分类结果;所得结果比传统分类方法更细致、全面、合理。其常用的统计量是距离。常用的聚类方法为谱系聚类法等。2.3谱系聚类法2.3.1概念谱系聚类法是目前应用较为广泛的一种聚类法。谱系聚类是根据生物分类学的思想对研究对象进行分类的方法。在生物分类学中,分类的单位是:门、纲、目、科、属、种。其中种是分类的基本单位,分类单位越小,它所包含的生物就越少,生物之间的共同特征就越多。利用这种思想,谱系聚类首先将各样品自成一类,然后
5、把最相似(距离最近或相似系数最大)的样品聚为小类,再将已聚合的小类按各类之间的相似性(用类间距离度量)进行再聚合,随着相似性的减弱,最后将一切子类都聚为一大类,从而得到一个按相似性大小聚结起来的一个谱系图。2.3.2选择距离(参考文献1p209页)在使用系统聚类法进行聚类的过程中,尤其是Q型聚类是建立在样品之间距离矩阵的基础上的,通常需要对原始数据进行参考点的建立和去量纲化的处理,然后求出样品距离矩阵D,我们采用比较广泛的闵可夫斯基(Minkowski)距离:mP1dj(|xik-xjk|)Qdijmp1(|Xik-xjk|)2k1更新涉及类间距离的计算,需要事先计算类与方法,我们可以把系统聚
6、类法分为最短距离法、k1当p=2时即为欧几里得CEuclidean)距离。然后进行类的搜索、合并于距离矩阵的类之间的距离。依据类问距离不同的计算最长距离法、重心法、离差平方和法(ward)等。设Gp,Gq为前一轮操作中形成的某两个聚类,在本轮操作中归聚为新类Gr=GpGq则新类Gr与前一轮操作中形成吨,Gq之外的任意一类G,的距离递推公式如下:最短距离法drlmin(dp*dql),其中lp,q.最长距离法drlmin(dpl,dql),其中lp,q.中间距离法2121221drl-dpl+dlqdpq,-0.中心距离法2nP.2nq2npnq2drldpl+dlqdpq,nrnrnrnr其中
7、np和n分别为Gp和G包含的聚类对象个数,n=np+nqWard法2nl+npj2.nl+n,2nlJ2drldpldlqdpq,nr+nlnr+nlnr+nl注意,Ward法要求初始距离矩阵采用欧式距离公式计算各个对象的距离。2.4得到闵可夫斯基(Minkowski)距离谱系聚类法函数(见附录A.1)(1) pdist创建聚类对象的Minkowski距离矩阵。(2) squarform拉直矩阵D。(3) linkage用D或其拉直矩阵创建信息矩阵G,默认的类间距离为最短距离法。(4) dendrogram创建G的谱系聚类图。(5) cluster创建G的指定个数类。2.5画谱系聚类图(见图
8、2.1)08-1rrrnnH229273105f12262161625302915ZD4111724iti1232图2.1Iris花瓣数据谱系聚类图2.6得出分类由图2.1得出Iris花瓣数据截断处可选择d=1,d=0.8,d=0.666对应的分类个数为2,3,5类。2.7cluster创建G的指定个数类。(matlab程序见A.3)分3类图(见图2.2)4.51111紫-第类*-*米*米暮斋*-*第一类-*来*米米*米*-*果*-*米*来*-*#翔H类*-*来*.JkJIhkII43.52.54,555.566,5图2.2谱系聚类分析分为三类图2.8结论3类不太恰当,应该两类K-means我
9、们将更改距离。3.1 由图2.2将数据谱系聚类分析分为三类图可知,将数据分为或者5类更合适,不过也有可能是我们选择的距离有问题。下面3k-均值聚类K-Means算法思想1967年Macqueen提出了K-means算法4,基本思想是把数据集中的数据点随机生成k组,把每组的均值作为中心点。重新计算每个数据点与各组的中心点的相似性,根据数据点相似性的度量准则,把每个数据点重新分组,计算每组新的均值作为中心点。不断重复上述过程,直到中心点的均值收敛,停止迭代过程。K-means算法是一种比较快速的聚类方法,时间复杂度为O(nkt),其中n是数据点的数目,k是分组数目,t是迭代次数。K-means算法
10、也存在不足,最大问题要指定分组数目并且在运行过程中容易导致局部最优。3.1.1 K-均值算法K-均值算法是一种已知聚类个数的“无监督学习”算法。首先指定表示聚类个数的K值,然后对数据集聚类,算法结束时用K个聚类中心表示聚类结果。对于设定的目标准则函数,通过向目标准则函数值减小的方向进行迭代更新,目标准则函数值达到极小值时算法结束,得到较优的聚类结果。设数据集为Xxi|XiRdK个距离中心为V1,V2,.,Vk。令Cj(j1,2,.,k)表示K个聚类的类别,则:Vi|C|xCi定义目标准则函数为:kCiISSE=dxj,Vi(2)i1j1其中|CiI表示Ci类包含样本的个数,使用欧式距离dx,X
11、jJ(XjXj)(xXj)T(3)度量样本间的相似性。欧式距离适用于类内数据对象符合超球形分布的情况,目标准则函数SSE表示为每个数据对象到相应聚类中心距离的平方和,即聚类均方误差的最小值。3.1.2 K-均值算法的流程如下:(1) 随机选取K个初始聚类中心V1,V2,.,Vk;(2) 按照最小距离原则,对数据集聚类,确定每个样本的类属关系;(3) 使用公式(1)更新K个簇的中心;(4) 重复执行(2)到(4),直到目标准则函数收敛或聚类中心稳定。显然,初始聚类中心对K-均值算法产生很大的影响,簇集中易存在平均误差较大的簇,聚类结果仅能收敛到局部最优。即使选取不同的初始聚类中心执行多次K-均值
12、算法,也只是在庞大的初值空间里进行简单的搜索,聚类结果很难达到全局最优。当数据集中存在较多噪音或孤立点时,已有的初始聚类中心优化方法很难发现合适的初始聚类中心。3.2复合相关系数的计算(计算过程见附录A.4)分别记最短、最长、类平均、重心、离差平方和距离为G1、G2、G3、G4、G5,相对应的复合相关系数分别记为R1、R2、R3、R4、R5,以欧式距离为样本间距离计算得到表3-1表3-1复合相关系数R1R2R3R4R50.86390.72760.87680.87700.8728由表2可知以重心距离进行聚类分析效果应该最为理想3.3聚类结果(见图3.1)以重心距离为类间距离进行谱系聚类分析得到(
13、matlab程序参考附录A.1-4)102570150923321206154S1S1113141/3021712a26IDIS24192922252/2B图3.1谱系聚类图4.555.566.577.583.4谱系聚类结果(见图3.2)4r米米1第二类*吐1.*11#1择3.5米#来来*来豢拳星w*-*来来米*来第噗-32.5-亲*L*M*-*米*M米*来*糊J片类*事*米*Jill米米*.*图3.2谱系聚类结果3.4K-Means聚类结果(见图3.3)4.511111r1*京4-笫二类*来*米察率*米3.5*#*第一类-米米:*米*聚建*米*事来*拳米米*3米米*米*来米*米*案事章*:湛
14、米*寄*亲*2.5-*第王美*聚2Ljj11iJ44.555.566.577.5&图3.3K-Means聚类结果3.5分析结果由图3.2结果可得第1类有36个样本,第2类有64个样本,第3类有50个样本,由图3.3可知第1类有62个样本,第2类有49个样本,第3类有39个样本两种方法基本得到的结论基本一致,不过都不太理想。这可能是数据量太小了的原因。大数据时代,需耍大量的数据。1 参考文献包研科.数据分析教程.北京:清华大学出版社,2011曾繁慧.数值分析.徐州:中国矿业大学出版社,2009袁方,周志勇,宋鑫.初始聚类中心优化的K-means算发J.计算机工程,2007,33(3):65-66
15、MacQueen,James.Somemethodsforclassificationandanalysisofmultivariateobservations.ProceedingsofthefifthBerkeleysymposiumonmathematicalstatisticsandprobability.Vol.1.No.281-297.1967余立强.LAMP架构搭建与网站运行实例J.网络与信息,2011(8):5052吴夙慧,成颖,郑彦宁,潘云涛.K-means算法研究综述J.现代图书情报技术2011,(5):28-35.附录A.1谱系聚类法函数functionf=test4()
16、loadhuaban.matD=pdist(X,minkowski);G=linkage(D);dendrogram(G);T=cluster(G,3)A.2自编k-means聚类分析xwKmeans.m函数functioncid,nr,centers=xwKmeans(x,k,nc)%CID,NR,CENTERS=CSKMEANS(X,K,NC)PerformsK-means%X输入聚合数据%K通过观察得到的经验分组数据%每行一个观测,NC为聚类指数,来源于初始的聚类中心值,默认情况下为随机的观测%输出:IDX为最终分类%nr为每个每个聚合的中心值%CENTERSisamatrix,wher
17、eeachrow%correspondstoaclustercenter.n,d=size(x);ifnargin3ind=ceil(n*rand(1,k);nc=x(ind,:)+randn(k,d);endcid=zeros(1,n);oldcid=ones(1,n);nr=zeros(1,k);maxiter=100;iter=1;whileisequal(cid,oldcid)&itermaxiterfori=1:ndist=sum(repmat(x(i,:),k,1)-nc).A2,2);m,ind=min(dist);cid(i)=ind;endfori=1:kind=find(c
18、id=i);nc(i,:)=mean(x(ind,:);nr(i)=length(ind);enditer=iter+1;endmaxiter=2;iter=1;move=1;whileitermaxiter&move=0move=0;fori=1:n%找到与所有聚合的距离dist=sum(repmat(x(i,:),k,1)-nc),2,2);r=cid(i);dadj=nr./(nr+1).*dist;m,ind=min(dadj);%最小的就是聚合的分类ifind=rcid(i)=ind;ic=find(cid=ind);nc(ind,:)=mean(x(ic,:);move=1;end
19、enditer=iter+1;endcenters=nc;ifmove=0disp(初始化聚类后没有点移动)elsedisp(初始化后开始进行聚合分类)endcid=cid;A.3k-means聚类分析分类图matlab的main.m函数functionf=main(X,k)n,d=size(X);bn=round(n/k*rand);%第一个随机数在前1/K的范围内%;表示按列显示,都好表示按行显示%初始聚类中心%X(bn,:)选择某一行数据作为聚类中心,其列值为全部%X数据源,k聚类数目,nc表示k个初始化聚类中心%cid表示每个数据属于哪一类,nr表示每一类的个数,centers表示聚类
20、中心cid,nr,centers=xwKmeans(X,k)fori=1:150ifcid(i)=1plot(X(i,1),X(i,2),r*)%显示第一类holdonelseifcid(i)=2,plot(X(i,1),X(i,2),b*)%显示第二类plot(X(i,2),b*)%显示第一类holdonelseifcid(i)=3,plot(X(i,1),X(i,2),g*)%显示第三类%plot(X(i,2),g*)%显示第一类holdonelseifcid(i)=4,plot(X(i,1),X(i,2),k*)%显示第四类%plot(X(i,2),k*)%显示第一类holdonende
21、ndendendendtext(7.5,3.5,第一类);text(5,4,第二类);text(5.5,2.5,第三类);text(-1,-1,第四类);A.4相关系数matllab指令d=pdist(x);G1=linkage(d);G2=linkage(d,G3=linkage(d,G4=linkage(d,G5=linkage(d,complete)centroid)average,);ward);R1=cophenet(G1,d);R2=cophenet(G2,d);R3=cophenet(G3,d);R4=cophenet(G4,d);R5=cophenet(G5,d);B.1:R.
22、A.Fisher在1936年发表的Iris数据表B.1Iris数据样本号萼片长萼片宽花瓣长花瓣宽15.13.51.40.2牵牛24.931.40.2牵牛34.73.21.30.2牵牛44.63.11.50.2牵牛553.61.40.2牵牛65.43.91.70.4牵牛74.63.41.40.3牵牛853.41.50.2牵牛94.42.91.40.2牵牛104.93.11.50.1牵牛115.43.71.50.2牵牛124.83.41.60.2牵牛134.831.40.1牵牛144.331.10.1牵牛155.841.20.2牵牛165.74.41.50.4牵牛175.43.91.30.4牵牛1
23、85.13.51.40.3牵牛195.73.81.70.3牵牛205.13.81.50.3牵牛215.43.41.70.2牵牛225.13.71.50.4牵牛234.63.610.2牵牛245.13.31.70.5牵牛254.83.41.90.2牵牛26531.60.2牵牛2753.41.60.4牵牛285.23.51.50.2牵牛295.23.41.40.2牵牛304.73.21.60.2牵牛314.83.11.60.2牵牛325.43.41.50.4牵牛335.24.11.50.1牵牛345.54.21.40.2牵牛354.93.11.50.2牵牛3653.21.20.2牵牛375.53.
24、51.30.2牵牛384.93.61.40.1牵牛394.431.30.2牵牛405.13.41.50.2牵牛4153.51.30.3牵牛424.52.31.30.3牵牛434.43.21.30.2牵牛4453.51.60.6牵牛455.13.81.90.4牵牛464.831.40.3牵牛475.13.81.60.2牵牛484.63.21.40.2牵牛495.33.71.50.2牵牛5053.31.40.2牵牛5173.24.71.4杂色526.43.24.51.5杂色536.93.14.91.5杂色545.52.341.3杂色556.52.84.61.5杂色565.72.84.51.3杂色5
25、76.33.34.71.6杂色584.92.43.31杂色596.62.94.61.3杂色605.22.73.91.4杂色61523.51杂色625.934.21.5杂色6362.241杂色646.12.94.71.4杂色655.62.93.61.3杂色666.73.14.41.4杂色675.634.51.5杂色685.82.74.11杂色696.22.24.51.5杂色705.62.53.91.1杂色715.93.24.81.8杂色726.12.841.3杂色736.32.54.91.5杂色746.12.84.71.2杂色756.42.94.31.3杂色766.634.41.4杂色776.8
26、2.84.81.4杂色786.7351.7杂色7962.94.51.5杂色805.72.63.51杂色815.52.43.81.1杂色825.52.43.71杂色835.82.73.91.2杂色8462.75.11.6杂色855.434.51.5杂色8663.44.51.6杂色876.73.14.71.5杂色886.32.34.41.3杂色895.634.11.3杂色905.52.541.3杂色915.52.64.41.2杂色926.134.61.4杂色935.82.641.2杂色9452.33.31杂色955.62.74.21.3杂色965.734.21.2杂色975.72.94.21.3杂
27、色986.22.94.31.3杂色995.12.531.1杂色1005.72.84.11.3杂色1016.33.362.5锦葵1025.82.75.11.9锦葵1037.135.92.1锦葵1046.32.95.61.8锦葵6.535.82.2锦葵7.636.62.1锦葵4.92.54.51.7锦葵7.32.96.31.8锦葵6.72.55.81.8锦葵7.23.66.12.5锦葵6.53.25.12锦葵6.42.75.31.9锦葵6.835.52.1锦葵5.72.552锦葵5.82.85.12.4锦葵6.43.25.32.3锦葵6.535.51.8锦葵7.73.86.72.2锦葵7.72.6
28、6.92.3锦葵62.251.5锦葵6.93.25.72.3锦葵5.62.84.92锦葵7.72.86.72锦葵6.32.74.91.8锦葵6.73.35.72.1锦葵7.23.261.8锦葵1051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471486.22.84.81.8锦葵6.134.91.8锦葵6.42.85.62.1锦葵7.235.81.6锦葵7.42.86.11.9锦葵7.93.86.42锦葵6.42.85.62.2锦葵6.32.85.11.5锦葵6.12.65.61.4锦葵7.736.12.3锦葵6.33.45.62.4锦葵6.43.15.51.8锦葵634.81.8锦葵6.93.15.42.1锦葵6.73.15.62.4锦葵6.93.15.12.3锦葵5.82.75.11.9锦葵6.83.25.92.3锦葵6.73.35.72.5锦葵6.735.22.3锦葵6.32.551.9锦葵6.535.22锦葵1491503.45.42.3锦葵5.935.11.8锦葵