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

(14页)

'模式识别中K均值与最近邻法matlab实现'
实用模式识别算法实现 ——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=4[u,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.类别次数第一类第二类第三类总识别率11.000.961.000.9921.000.920.960.9631.000.840.960.9341.000.920.920.9551.000.880.960.9561.000.961.000.9971.000.960.960.9781.000.960.920.9691.000.961.000.99101.000.920.880.93总识别率1.000.920.960.96b) 最近邻法 (即令K=1) 实验结果表2.类别次数第一类第二类第三类总识别率11.000.880.960.9521.000.960.800.9231.000.960.920.9641.000.920.880.9351.000.960.980.9561.000.960.960.9771.000.960.800.9281.001.001.001.0091.000.880.960.95101.000.960.920.96总识别率1.000.940.920.95(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
关 键 词:
模式识别 均值 近邻 matlab 实现
 天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:模式识别中K均值与最近邻法matlab实现
链接地址: https://www.wenku365.com/p-44788843.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给天天文库发消息,QQ:1290478887 - 联系我们

本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】。本站是网络服务平台方,若您的权利被侵害,侵权客服QQ:1290478887 欢迎举报。

1290478887@qq.com 2017-2027 https://www.wenku365.com 网站版权所有

粤ICP备19057495号 

收起
展开