iris数据的kmeans和knn算法代码.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文档。上传文档
查看更多
clear clc load data.txt; a=data(1:30,1:4);%取第一类的前三十组 aa=data(31:50,1:4);%第一类的后二十组 b=data(51:80,1:4);%第二类的前三十组 bb=data(81:100,1:4);%第二类的后二十组 c=data(101:130,1:4);;%取第三类的前三十组 cc=data(131:150,1:4); %第三类的后二十组 train=cat(1,a,b,c);%组成训练样本(90*4) test=cat(1,aa,bb,cc); %组成测试样本(60*4) c=3; %c均值c=3 z1=train(1,:); z2=train(45,:); z3=train(90,:); %初始聚类中心z1,z2,z3 m=0;t=0; %迭代步数 while m==0 samp1=[];samp2=[];samp3=[]; %定义空样本:第一类为samp1,第二类为samp2,第三类为samp3 n1=1;n2=1;n3=1; t=t+1; for i=1:90 if (pdist([train(i,:);z1])pdist([train(i,:);z2]))(pdist([train(i,:);z1])pdist([train(i,:);z3]))%距离 %若训练样本与聚类z1的距离小于与z2,z3的距离,则赋值于samp1. samp1(n1,:)=train(i,:); n1=n1+1; elseif (pdist([train(i,:);z2])pdist([train(i,:);z1]))(pdist([train(i,:);z2])pdist([train(i,:);z3])) %若训练样本与聚类z2的距离小于与z1,z3的距离,则赋值于samp2. samp2(n2,:)=train(i,:); n2=n2+1; else%其他则赋值于samp3 samp3(n3,:)=train(i,:); n3=n3+1; end end %for c1=mean(samp1,1); c2=mean(samp2,1); c3=mean(samp3,1); %求出新的均值,产生新的聚类中心 if isequal(c1,z1)isequal(c2,z2)isequal(c3,z3) %判断新旧聚类中心是否相等。若相等则结束m=1 m=1; end z1=c1; %新旧聚类中心若不相等,新聚类中心赋值于旧聚类中心。继续循环 z2=c2; z3=c3; end %while %%聚类中心z1=[5.0267 3.45 1.4733 0.24667],z2=[5.9703 2.7459 4.44051.4676],z3=[6.9 3.0478 5.8174 2.0217] %%kmeans算法结束后分三类samp1(30*4),samp2(37*4),samp3(23*4)共90行,迭代次数t=5 sum=0; [u,v]=size(test);%返回测试样本行列,u=60,v=4 test1=[];test2=[];test3=[];m1=1;m2=1;m3=1; for x=1:u d1=pdist([test(x,:);z1]);%测试样本与聚类中心z1的距离 d2=pdist([test(x,:);z2]);%测试样本与聚类中心z2的距离 d3=pdist([test(x,:);z3]);%测试样本与聚类中心z3的距离 if d1d2d1d3%若d1最小则测试样本赋值于test1 test1(m1,:)=test(x,:); m1=m1+1;m=1; elseif d2d1d2d3%若d2最小则测试样本赋值于test2 test2(m2,:)=test(x,:); m2=m2+1;m=2; else test3(m3,:)=test(x,:);%若d3最小则测试样本赋值于test3 m3=m3+1;m=3; end%分类结果为test1(20*4),test2(25*4),test3(15*4)共60组 if x=20 disp(sprintf

文档评论(0)

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

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档