模式识别最近邻法和k近邻法MATLAB实现_第1页
模式识别最近邻法和k近邻法MATLAB实现_第2页
模式识别最近邻法和k近邻法MATLAB实现_第3页
模式识别最近邻法和k近邻法MATLAB实现_第4页
模式识别最近邻法和k近邻法MATLAB实现_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、最近邻法和k- 近邻法学号: 02105120 姓名:吴林一 . 基本概念:最近邻法:对于未知样本 x,比较x与N个已知类别的样本之间的欧式距离,并决策 x与 距离它最近的样本同类。K 近邻法:取未知样本x 的 k 个近邻,看这k 个近邻中多数属于哪一类,就把x 归为哪一类。 K 取奇数,为了是避免k1=k2 的情况。二 . 问题分析:要判别 x 属于哪一类,关键要求得与x 最近的 k 个样本(当k=1 时,即是最近邻法),然后判别这k 个样本的多数属于哪一类。可采用欧式距离公式求得两个样本间的距离s=sqrt ( (x1-x2 ) A2+(y1-y2)A2)三 . 算法分析:该算法中任取每类

2、样本的一半作为训练样本,其余作为测试样本。例如 iris 中取每类样本的 25 组作为训练样本,剩余25 组作为测试样本,依次求得与一测试样本x 距离最近的k个样本,并判断k 个样本多数属于哪一类,则x 就属于哪类。测试10 次,取 10 次分类正确率的平均值来检验算法的性能。四 .MATLAB 代码 :最近邻算实现对Iris 分类clc;totalsum=0;for ii=1:10data=load( 'iris.txt' );data1=data(1:50,1:4);%任取Iris-setosa 数据的 25 组rbow1=randperm(50);trainsample1

3、=data1(rbow1(:,1:25),1:4);rbow1(:,26:50)=sort(rbow1(:,26:50);%剩余的25 组按行下标大小顺序排列testsample1=data1(rbow1(:,26:50),1:4);data2=data(51:100,1:4);%任取Iris-versicolor数据的 25 组rbow2=randperm(50);trainsample2=data2(rbow2(:,1:25),1:4);rbow2(:,26:50)=sort(rbow2(:,26:50);testsample2=data2(rbow2(:,26:50),1:4);data

4、3=data(101:150,1:4);%任取Iris-virginica数据的 25 组rbow3=randperm(50);trainsample3=data3(rbow3(:,1:25),1:4);rbow3(:,26:50)=sort(rbow3(:,26:50);testsample3=data3(rbow3(:,26:50),1:4);%包 含 75trainsample=cat(1,trainsample1,trainsample2,trainsample3); 组数据的样本集 testsample=cat(1,testsample1,testsample2,testsample

5、3); newchar=zeros(1,75);sum=0; i,j=size(trainsample);%i=60,j=4u,v=size(testsample);%u=90,v=4for x=1:u for y=1:iresult=sqrt(testsample(x,1)-trainsample(y,1)F2+(testsample(x,2) -trainsample(y,2)A2+(testsample(x,3)-trainsample(y,3)F2+(testsa mple(x,4)-trainsample(y,4)42);% 欧式距离newchar(1,y)=result; end

6、; new,Ind=sort(newchar); class1=0; class2=0; class3=0; if Ind(1,1)<=25 class1=class1+1; elseif Ind(1,1)>25&&Ind(1,1)<=50 class2=class2+1; else class3=class3+1; end if class1>class2&&class1>class3 m=1; ty= 'Iris-setosa' ; elseif class2>class1&&class2&

7、gt;class3 m=2; ty= 'Iris-versicolor'elseif class3>class1&&class3>class2 m=3; ty= 'Iris-virginica'else m=0; ty= 'none' ; end if x<=25&&m>0 disp(sprintf('第组数据分类后为 s 类,rbow1(:,x+25),ty);elseif x<=25&&m=0disp(sprintf(' 第 %d 组数据分类后为%s

8、 类 ' ,rbow1(:,x+25), 'none' );endif x>25&&x<=50&&m>0disp(sprintf('第组数据分类后为elseif x>25&&x<=50&&m=0disp(sprintf(' 第 %d 组数据分类后为endif x>50&&x<=75&&m>0disp(sprintf(' 第 %d 组数据分类后为elseif x>50&&x<=7

9、5&&m=0disp(sprintf(' 第 %d 组数据分类后为%s 类 ' ,50+rbow2(:,x),ty);%s 类 ' ,50+rbow2(:,x),'none' );%s 类 ' ,100+rbow3(:,x-25),ty);%s 类 ' ,100+rbow3(:,x-25),'none' )endif (x<=25&&m=1)|(x>25&&x<=50&&m=2)|(x>50&&x<=75&

10、&m=3) sum=sum+1;endenddisp(sprintf( ' 第 %d 次分类识别率为%4.2f' ,ii,sum/75);totalsum=totalsum+(sum/75);enddisp(sprintf( '10 次分类平均识别率为%4.2f' ,totalsum/10);测试结果:第 3 组数据分类后为第 5 组数据分类后为第 6 组数据分类后为第 7 组数据分类后为第 10 组数据分类后为 第 11 组数据分类后为 第 12 组数据分类后为 第 14组数据分类后为 第 16 组数据分类后为 第 18 组数据分类后为 第 19 组数

11、据分类后为 第 20 组数据分类后为 第 23 组数据分类后为 第 24 组数据分类后为 第 26 组数据分类后为 第 28 组数据分类后为 第 30 组数据分类后为 第 31 组数据分类后为Iris-setosa 类Iris-setosa 类Iris-setosa 类Iris-setosa 类Iris-setosa 类Iris-setosa 类Iris-setosa 类Iris-setosa 类Iris-setosa 类Iris-setosa 类Iris-setosa 类Iris-setosa 类Iris-setosa 类Iris-setosa 类Iris-setosa 类Iris-seto

12、sa 类Iris-setosa 类Iris-setosa 类34 组数据分类后为37 组数据分类后为39 组数据分类后为41 组数据分类后为44 组数据分类后为45 组数据分类后为49 组数据分类后为51 组数据分类后为53 组数据分类后为54 组数据分类后为55 组数据分类后为57 组数据分类后为58 组数据分类后为59 组数据分类后为60 组数据分类后为61 组数据分类后为62 组数据分类后为68 组数据分类后为70 组数据分类后为71 组数据分类后为74 组数据分类后为75 组数据分类后为77 组数据分类后为79 组数据分类后为80 组数据分类后为84 组数据分类后为85 组数据分类后为

13、92 组数据分类后为95 组数据分类后为97 组数据分类后为98 组数据分类后为99 组数据分类后为102 组数据分类后为103 组数据分类后为105 组数据分类后为106 组数据分类后为107 组数据分类后为108 组数据分类后为114 组数据分类后为118 组数据分类后为119 组数据分类后为124 组数据分类后为125 组数据分类后为126 组数据分类后为ris-setosa 类 ris-setosa 类 ris-setosa 类 ris-setosa 类 ris-setosa 类 ris-setosa 类 ris-setosa 类 ris-versicolor ris-versicol

14、or ris-versicolor ris-versicolor ris-versicolor ris-versicolor ris-versicolor ris-versicolor ris-versicolor ris-versicolor ris-versicolor ris-versicolor类类类 类类类 类类类 类类类ris-virginica 类 ris-versicolor 类 ris-versicolor 类 ris-versicolor 类 ris-versicolor 类 ris-versicolor 类 ris-virginica 类 ris-versicolor 类

15、 ris-versicolor 类 ris-versicolor 类 ris-versicolor 类 ris-versicolor 类 ris-versicolor 类 Iris-virginica 类 Iris-virginica 类 Iris-virginica 类 Iris-virginica 类Iris-versicolor 类Iris-virginica Iris-virginica Iris-virginica Iris-virginica Iris-virginica Iris-virginica Iris-virginica类类类类类类类第127组数据分类后为Iris-vir

16、ginica第128组数据分类后为Iris-virginica第129组数据分类后为Iris-virginica第130组数据分类后为Iris-virginica第133组数据分类后为Iris-virginica第135组数据分类后为Iris-virginica第137组数据分类后为Iris-virginica第138组数据分类后为Iris-virginica第142组数据分类后为Iris-virginica第144组数据分类后为Iris-virginica第148组数据分类后为Iris-virginica第149组数据分类后为Iris-virginica第150组数据分类后为Iris-vir

17、ginica类类类类类类类类类类类类类1实验次数识别率第1次分类识另悚为0. 96第2次分类识另捽为0. 92第2次分类识隔0. 96第d次分类识国摔为0,97第5吹常类识降为0. 92第6次分类识另峰为0. 96第欲分类股悻0. 97第8次分类识另峰为0. 93第9次分类识品悚为0. 96第1。次分类识别率为0. 93次分类平均识别率为0. 95k近邻法对wine分类:clc;otalsum=0;for ii=1:10%®环测试 10 次data=load( 'wine.txt' ); %#入 wine 数据data1=data(1:59,1:13);派取第一类数据

18、的30 组rbow1=randperm(59);trainsample1=data1(sort(rbow1(:,1:30),1:13);rbow1(:,31:59)=sort(rbow1(:,31:59);%剩余的29组按行下标大小顺序排列testsample1=data1(rbow1(:,31:59),1:13);data2=data(60:130,1:13);%任取第二类数据的35 组rbow2=randperm(71); trainsample2=data2(sort(rbow2(:,1:35),1:13); rbow2(:,36:71)=sort(rbow2(:,36:71); tes

19、tsample2=data2(rbow2(:,36:71),1:13); data3=data(131:178,1:13);%任取第三类数据的24 组rbow3=randperm(48); trainsample3=data3(sort(rbow3(:,1:24),1:13); rbow3(:,25:48)=sort(rbow3(:,25:48); testsample3=data3(rbow3(:,25:48),1:13);train_sample=cat(1,trainsample1,trainsample2,trainsample3);%包含89组数据的样本集 test_sample=c

20、at(1,testsample1,testsample2,testsample3); k=19; %19近邻法 newchar=zeros(1,89); sum=0; i,j=size(train_sample);%i=89,j=13u,v=size(test_sample);%u=89,v=13for x=1:u for y=1:iresult=sqrt(test_sample(x,1)-train_sample(y,1)A2+(test_sample(x ,2)-train_sample(y,2)A2+(test_sample(x,3)-train_sample(y,3)F2+( test

21、_sample(x,4)-train_sample(y,4)F2+(test_sample(x,5)-train_sam ple(y,5)A2+(test_sample(x,6)-train_sample(y,6)42+(test_sample(x ,7)-train_sample(y,7)A2+(test_sample(x,8)-train_sample(y,8)A2+( test_sample(x,9)-train_sample(y,9)F2+(test_sample(x,10)-train_sa mple(y,10)A2+(test_sample(x,11)-train_sample(y

22、,11)A2+(test_samp le(x,12)-train_sample(y,12)A2+(test_sample(x,13)-train_sample(y, 13)人2);%欧式距离newchar(1,y)=result; end ; new,Ind=sort(newchar); class1=0; class 2=0; class 3=0; for n=1:k if Ind(1,n)<=30 class 1= class 1+1; elseif Ind(1,n)>30&&Ind(1,n)<=65class 2= class 2+1; elseclas

23、s 3= class3+1;endendif class 1>= class 2&& class1>= class3m=1;elseifclass2>= class1&& class2>= class3m=2;elseifclass3>= class1&& class3>= class2m=3;endif x<=29disp(sprintf('第组数据分类后为第 类,rbow1(:,30+x),m);elseif x>29&&x<=65disp(sprintf('

24、; 第 %d 组数据分类后为第%d 类 ' ,59+rbow2(:,x+6),m);elseif x>65&&x<=89disp(sprintf('第 组数据分类后为第 类,130+rbow3(:,x-41),m);endif (x<=29&&m=1)|(x>29&&x<=65&&m=2)|(x>65&&x<=89&&m=3) sum=sum+1;endenddisp(sprintf( ' 第 %d 次分类识别率为%4.2f'

25、,ii,sum/89);totalsum=totalsum+(sum/89);enddisp(sprintf( '10 次分类平均识别率为%4.2f' ,totalsum/10);第 2 组数据分类后为第1 类第4组数据分类后为第1类第5组数据分类后为第3类第6组数据分类后为第1类第8组数据分类后为第1类第10 组数据分类后为第1类第11 组数据分类后为第1类第 14组数据分类后为第1 类第16 组数据分类后为第1类第19 组数据分类后为第1类第20 组数据分类后为第3类第21 组数据分类后为第3类第22 组数据分类后为第3类第26 组数据分类后为第3类第27 组数据分类后为第

26、1类第28 组数据分类后为第1类第30 组数据分类后为第1类第33 组数据分类后为第1类第36 组数据分类后为第1类第37 组数据分类后为第1类第43 组数据分类后为第1类第44 组数据分类后为第3类第45 组数据分类后为第1类第46 组数据分类后为第1类第49 组数据分类后为第1类第52 组数据分类后为第1类第54 组数据分类后为第1类第56 组数据分类后为第1类第57 组数据分类后为第1类第60 组数据分类后为第2类第61 组数据分类后为第3类第63 组数据分类后为第3类第65 组数据分类后为第2类第66 组数据分类后为第3类第67 组数据分类后为第2类第71 组数据分类后为第1类第72 组数据分类后为第2类第74 组数据分类后为第1类第76 组数据分类后为第2类第77 组数据分类后为第2类第79 组数据分类后为第3类第81 组数据分类后为第2类第82 组数据分类后为第3类第83 组数据分类后为第3类第84 组数据分类后为第2类第86 组数据分类后为第2类第87 组数据分类后为第2类第88 组数据分类后为第2类第93 组数据分类后为第2类第96 组数据分类后为第1类第98 组数据分类后为第2类第99 组数据分类后为第3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论