欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOC文档下载  

    模式识别中K均值与最近邻法matlab实现.doc

    • 资源ID:16903       资源大小:97.50KB        全文页数:14页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    模式识别中K均值与最近邻法matlab实现.doc

    模式识别算法实现K近邻法&最近邻法一 程序<用MATLAB做的>1. 用Iris数据集验证的程序1用Iris数据集验证的M文件:load iris.mat;A=randperm(50);B=randperm(50);C=randperm(50);a1=A(1,1:25);a2=A(1,26:50);a=Iris(a1,1:4);%随机取第一类数据的25组aa=Iris(a2,1:4);b1=50*ones(1,25)+B(1,1:25);b2=50*ones(1,25)+B(1,26:50);b=Iris(b1,1:4);%随机取第二类数据的25组bb=Iris(b2,1:4);c1=100*ones(1,25)+C(1,1:25);c2=100*ones(1,25)+C(1,26:50);c=Iris(c1,1:4);%随机取第三类数据的25组cc=Iris(c2,1:4);train_sample=cat(1,a,b,c);%拼接成包含75组数据的样本集test_sample=cat(1,aa,bb,cc);k=7;%7近邻法cha=zeros(1,75);sum1=0;sum2=0;sum3=0;sum=0;i,j=size(train_sample);%i=75,j=4u,v=size(test_sample);%u=75,v=4for x=1:u for y=1:i result=sqrt(test_sample(x,1)-train_sample(y,1)2+(test_sample(x,2)-train_sample(y,2)2+(test_sample(x,3)-train_sample(y,3)2+(test_sample(x,4)-train_sample(y,4)2); cha(1,y)=result; end; z,Ind=sort(cha);%Ind用来存储排序前在cha中的下标 m1=0; m2=0; m3=0; for n=1:k if Ind(1,n)<=25 m1=m1+1; elseif Ind(1,n)>25&&Ind(1,n)<=50 m2=m2+1; else m3=m3+1; end end if m1>=m2&&m1>=m3 m=1; elseif m2>=m1&&m2>=m3 m=2; elseif m3>=m1&&m3>=m2 m=3; end if (x<=25&&m=1) sum1=sum1+1; elseif(x>25&&x<=50&&m=2) sum2=sum2+1; elseif(x>50&&x<=75&&m=3) sum3=sum3+1; end if (x<=25&&m=1)|(x>25&&x<=50&&m=2)|(x>50&&x<=75&&m=3) sum=sum+1; endenddisp(sprintf('第一类分类正确率为%4.2f',sum1/25);disp(sprintf('第二类分类正确率为%4.2f',sum2/25);disp(sprintf('第三类分类正确率为%4.2f',sum3/25);disp(sprintf('总分类正确率为%4.2f',sum/75);2验证结果:a) K近邻法:K=7 实验结果表1.类别次数第一类第二类第三类总识别率12345678910总识别率b) 最近邻法 即令K=1 实验结果表2.类别次数第一类第二类第三类总识别率12345678910总识别率(3) 数据分析第一个表格是用K(k=7)近邻法得到的识别率,第二个表格是用最近邻法得到的识别率,可以看出对于Iris数据,两种方法的识别率都达到了95%左右。2. 用Wine数据集验证的程序1用Wine数据集验证的M文件:load wine.mat;A=randperm(59);B=randperm(71);C=randperm(48);a1=A(1,1:30);a2=A(1,31:59);a=wine(a1,1:14);aa=wine(a2,1:14);b1=59*ones(1,36)+B(1,1:36);b2=59*ones(1,35)+B(1,37:71);b=wine(b1,1:14);bb=wine(b2,1:14);c1=130*ones(1,24)+C(1,1:24);c2=130*ones(1,24)+C(1,25:48);c=wine(c1,1:14);cc=wine(c2,1:14);train_sample=cat(1,a,b,c);%拼接成样本集test_sample=cat(1,aa,bb,cc);k=7;%7近邻法cha=zeros(1,90);sum1=0;sum2=0;sum3=0;sum4=0;sum=0;i,j=size(train_sample);u,v=size(test_sample);for x=1:u for y=1:i result=sqrt(test_sample(x,2)-train_sample(y,2)2+(test_sample(x,3)-train_sample(y,3)2+(test_sample(x,4)-train_sample(y,4)2+(test_sample(x,5)-train_sample(y,5)2+(test_sample(x,6)-train_sample(y,6)2+(test_sample(x,7)-train_sample(y,7)2+(test_sample(x,8)-train_sample(y,8)2+(test_sample(x,9)-train_sample(y,9)2+(test_sample(x,10)-train_sample(y,10)2+(test_sample(x,11)-train_sample(y,11)2+(test_sample(x,12)-train_sample(y,12)2+(test_sample(x,13)-train_sample(y,13)2+(test_sample(x,14)-train_sample(y,14)2); cha(1,y)=result; end; z,Ind=sort(cha);%Ind用来存储排序前在cha中的下标 m1=0; m2=0; m3=0; for n=1:k if Ind(1,n)<=30 m1=m1+1; elseif Ind(1,n)>30&&Ind(1,n)<=66 m2=m2+1; else m3=m3+1; end end if m1>=m2&&m1>=m3 m=1; elseif m2>=m1&&m2>=m3 m=2; elseif m3>=m1&&m3>=m2 m=3; end if (x<=29&&m=1) sum1=sum1+1; elseif(x>29&&x<=64&&m=2) sum2=sum2+1; elseif(x>64&&x<=88&&m=3) sum3=sum3+1; end if (x<=29&&m=1)|(x>29&&x<=64&&m=2)|(x>64&&x<=88&&m=3) sum=sum+1; endenddisp(sprintf('第一类分类正确率为%4.2f',sum1/30);disp(sprintf('第二类分类正确率为%4.2f',sum2/36);disp(sprintf('第三类分类正确率为%4.2f',sum3/24);disp(sprintf('总分类正确率为%4.2f',sum/90);(2) 验证结果:a).K近邻法:K=7 实验结果表1.类别次数第一类第二类第三类总识别率12345678910总识别率b).最近邻法 即令K=1 实验结果表2.类别次数第一类第二类第三类总识别率12345678910总识别率(3)数据分析这两个是对Wine数据的识别率,第一个表格是用K(k=7)近邻法得到的识别率,第二个表格是用最近邻法得到的识别率,可以看出对于Wine数据,两种方法的识别率只达到了68%69%左右。3大作业收获通过这次的大作业,我学会了用MATLAB,感觉这个软件比C好多了。而且有一个很重要的收获,我自己刚开始写的没有随机取数的功能,后来,和同学聊了聊,才结识了randperm函数,感觉很有帮助。而且,对于.m文件和.mat文件的调用,也更加熟悉了。认识了UCI数据库。

    注意事项

    本文(模式识别中K均值与最近邻法matlab实现.doc)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开