K_means算法实现matlab.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
K_means算法的C语言算法实现 算法思想 K-means算法是一种动态聚类方法,这种方法先选择若干样本作为聚类的中心,在按某种聚类准则(通常采用最小距离原则)使各种样本向各个中心积聚,从而得到初始的分类,然后,判断分类的合理性,如果不合理,就修改分类,如此反复的修改聚类的迭代运算,直到合理为止。 2. 算法步骤 (1)适当选择c个类的初始中心; (2)在第k次迭代中,对任意一个样本,求其到c个中心的距离,将该样本归到距离最短的中心所在的类, (3)利用均值等方法更新该类的中心值; (4)对于所有的c个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代。 samp=[11.1506 6.7222 2.3139 5.9018 11.0827 5.7459 13.2174 13.8243 4.8005 0.9370 12.3576]; %样本集 [l0 l]=size(samp); %利用均值把样本分为两类,再将每类的均值作为聚类中心 th0=mean(samp); n1=0;n2=0; c1=0.0; c1=double(c1); c2=c1; for i=1:l if samp(i)th0 c1=c1+samp(i);n1=n1+1; else c2=c2+samp(i);n2=n2+1; end end c1=c1/n1;c2=c2/n2; %初始聚类中心 t=0; cl1=c1;cl2=c2; c11=c1;c22=c2; %聚类中心 while t==0 samp1=zeros(1,l); samp2=samp1; n1=1;n2=1; for i=1:l if abs(samp(i)-c11)abs(samp(i)-c22) samp1(n1)=samp(i); cl1=cl1+samp(i);n1=n1+1; c11=cl1/n1; else samp2(n2)=samp(i); cl2=cl2+samp(i);n2=n2+1; c22=cl2/n2; end end if c11==c1 c22==c2 t=1; end cl1=c11;cl2=c22; c1=c11;c2=c22; end %samp1,samp2为聚类的结果。 2)二维样本分类 %文件名为Main.m clear all; close all; Data=[0 0 1 1 1 2 2 3 6 6 7 7 7 8 8 8 8 9 9 9 0 1 0 1 2 1 2 2 6 7 6 7 8 6 7 8 9 7 8 9;]; [DataRow,DataColumn]=size(Data); Step=10; NumKind=2; Center=Data(:,1:NumKind); [KindData,KindNum]=Clustering(Center,Data); NewCenter=CaculateCenter(KindData,KindNum,DataRow); while (sum(sum(NewCenter~=Center))) Step Center=NewCenter; [KindData,KindNum]=Clustering(Center,Data); NewCenter=CaculateCenter(KindData,KindNum,DataRow); Step=Step-1; end for i=1:NumKind KindData(:,1:KindNum(i),i) end if DataRow~=2 disp(The result can not display on the two-dimensional figure ) else XMin=min(Data(1,:)); YMin=min(Data(2,:)); YMax=max(Data(2,:)); XMax=max(Data(1,:)); KindDisplay(KindData,KindNum,XMin,XMax,YMin,YMax) End 文件名为CaculateCenter.m function NewCenter=Cac

文档评论(0)

80092355km + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档