欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

聚类之K-means均值聚类

发布时间:2025/4/16 编程问答 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 聚类之K-means均值聚类 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

K-means均值聚类是先行选择若干个样本点作为聚类中心,再按某种聚类准则(通常采用最小距离原则)使各样本点向各个中心聚集,从而得到初始分类,然后,判断初始分类是否合理,如果不合理,就修改分类,......,以此反复进行修改聚类的迭代运算,直到合理为止。算法主要参照了蔡元龙老师的《模式识别》一书,matlab程序编写:

%Programed by Lu Qi,University of Chinese Academy of Sciences %my email:qqlu1992@gmail.com clear all clc train_x=[0 3 1 2 0;1 3 0 1 0;3 3 0 0 1;1 1 0 2 0;3 2 1 2 1;4 1 1 1 0]; [pars.num_train,pars.length]=size(train_x);%num_train代表样本的数量,length代表样本的维数 pars.num_cluster=2; initial=randperm(6); pars.iter=1; initial_point=initial(1:pars.num_cluster); pars.z{pars.iter}=train_x(initial_point,:); while 1for i=1:pars.num_trainfor j=1:pars.num_clusterd(i,j)=norm(train_x(i,:)-pars.z{pars.iter}(j,:));endend[min_d,index]=min(d,[],2);%求相同聚类样本的标号for i=1:pars.num_trainfor j=1:pars.num_clusterif (index(i))==jg(j,i)=[;i];endendendpars.iter=pars.iter+1;%找每一类中不等于0的数for j=1:pars.num_clustertemp=find(g(j,:));pars.z{pars.iter}(j,:)=sum(train_x(temp,:))/(length(temp));endif pars.z{pars.iter}==pars.z{pars.iter-1}break;end end for j=1:pars.num_clusterfprintf('the %d th cluster centre is\n',j);fprintf('%7.4f',pars.z{end}(j,:))fprintf('\n'); end


《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的聚类之K-means均值聚类的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。