资源描述:
《k-means聚类算法若干实例matlab代码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、要用matlab做聚类,找了几个资源,列在这里。一、方法1: 用matlab自带的函数,IDX=kmeans(X,k)二、参照一段网友写的代码functiony=kMeansCluster(m,k,isRand)%%%%%%%%%%%%%%%%%%kMeansCluster-Simplekmeansclusteringalgorithm%Author:KardiTeknomo,Ph.D.%%Purpose:classifytheobjectsindatamatrixbasedontheattri
2、butes%Criteria:minimizeEuclideandistancebetweencentroidsandobjectpoints%Formoreexplanationofthealgorithm,seehttp://people.revoledu.com/kardi/tutorial/kMean/index.html%Output:matrixdataplusanadditionalcolumnrepresentthegroupofeachobject%%Example:m=[11
3、;21;43;54]orinaniceform%m=[11;%21;%43;%54]%k=2%kMeansCluster(m,k)producesm=[111;%211;%432;%542]%Input:%m-required,matrixdata:objectsinrowsandattributesincolumns%k-optional,numberofgroups(default=1)%isRand-optional,ifusingrandominitializationisRand=1,
4、otherwiseinputanynumber(default)%itwillassignthefirstkdataasinitialcentroids%%LocalVariables%f-rownumberofdatathatbelongtogroupi%c-centroidcoordinatesize(1:k,1:maxCol)%g-currentiterationgroupmatrixsize(1:maxRow)%i-scalariterator%maxCol-scalarnumberof
5、rowsinthedatamatrixm=numberofattributes%maxRow-scalarnumberofcolumnsinthedatamatrixm=numberofobjects%temp-previousiterationgroupmatrixsize(1:maxRow)%z-minimumvalue(notneeded)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ifnargin<3,isRand=0;endifnargin<2,k=1;en
6、d[maxRow,maxCol]=size(m)ifmaxRow<=k,y=[m,1:maxRow]else%initialvalueofcentroidifisRand,p=randperm(size(m,1));%randominitializationfori=1:kc(i,:)=m(p(i),:)endelsefori=1:kc(i,:)=m(i,:)%sequentialinitializationendendtemp=zeros(maxRow,1);%initializeaszero
7、vectorwhile1,d=DistMatrix(m,c);%calculateobjcets-centroiddistances[z,g]=min(d,[],2);%findgroupmatrixgifg==temp,break;%stoptheiterationelsetemp=g;%copygroupmatrixtotemporaryvariableendfori=1:kf=find(g==i);iff%onlycomputecentroidiffisnotemptyc(i,:)=mea
8、n(m(find(g==i),:),1);endendendy=[m,g];endTheMatlabfunctionkMeansClusterabovecallfunctionDistMatrixasshowninthecodebelow.Itworksformulti-dimensionalEuclideandistance.Learnaboutothertypeofdistancehere.functiond=DistMatrix(A,B)%%%%%%%%%%%%%%%%%%%%%%%%%%