function [Y,y]=kmeans(m,k,isRand) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %kMeansCluster-Simple k-means clustering algorithm %Input: %m-required,maxtrix data %k-number of groups %isRand -optional,if using random initialzation isRand=1,otherwise input %any number(default),it will assign the first k data as initial centriods. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if nargin<3 isRand=0; end if nargin<2 k=1; end [maxRow,maxCol]=size(m); Y=zeros(k,maxCol); if maxRow<=k y=[m,1:maxRow] end %initial the values of centoid if isRand p=randperm(size(m,1)); for i=1:k c(i,:)=m(p(i),:); end else for i=1:k c(i,:)=m(i,:); end end temp=zeros(maxRow,1); %initial as zero vector while 1 d=EuclideanDistance(m,c); %calculate objects-centrid distances [z,g]=min(d,[],2); %find group maxtix g if g==temp break; %stop the interation else temp=g; %copy graup maxtrix to temporary variable end for i=1:k f=find(g==i); if f %only compute centroid if it is not emmpty c(i,:)=mean(m(find(g==i),:),1); end end end Y=c; y=[m,g]; end
kmeans python interation flag_kmeans的实现
最新推荐文章于 2022-04-06 20:58:53 发布