欢迎来到天天文库
浏览记录
ID:51910060
大小:48.00 KB
页数:2页
时间:2020-03-18
《模式识别(K近邻算法).doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、K近邻算法1.算法思想取未知样本的x的k个近邻,看这k个近邻中多数属于哪一类,就把x归于哪一类。具体说就是在N个已知的样本中,找出x的k个近邻。设这N个样本中,来自类的样本有个,来自的样本有个,...,来自类的样本有个,若分别是k个近邻中属于类的样本数,则我们可以定义判别函数为:决策规则为:若,则决策2.程序代码%KNN算法程序functionerror=knn(X,Y,K)%error为分类错误率data=X;[M,N]=size(X);Y0=Y;[m0,n0]=size(Y);t=[123];%3类向量ch
2、=randperm(M);%随机排列1—Merror=0;fori=1:10Y1=Y0;b=ch(1+(i-1)*M/10:i*M/10);X1=X(b,:);X(b,:)=[];Y1(b,:)=[];c=X;[m,n]=size(X1);%m=15,n=4[m1,n]=size(c);%m1=135,n=4forii=1:mforj=1:m1ss(j,:)=sum((X1(ii,:)-c(j,:)).^2);end[z1,z2]=sort(ss);%由小到大排序hh=hist(Y1(z2(1:K)),t);[
3、w,best]=max(hh);yy(i,ii)=t(best);%保存修改的分类结果enderror=error+sum(Y0(b,:)~=yy(i,:)');X=data;enderror=error/M;%算法主程序:clcclearallloadiris.mat%iris.mat中存放X为150*4的iris数据,Y为150*1的分类结果,以下均使用该数据n=0;fori=1:10error=knn(X,Y,1);n=n+error;endcorrect=1-n/103.程序运行结果做十折交叉验证得到:
4、当K=1时,正确分类概率为:0.9587当K=3时,正确分类概率为:0.9613当K=5时,正确分类概率为:0.9640当K=7时,正确分类概率为:0.9653当K=10时,正确分类概率为:0.9667当K=30时,正确分类概率为:0.9480当K=60时,正确分类概率为:0.90274.结果分析从以上的结果我们可以看出当k较小时,随着k的增加,其正确分类的概率也逐渐增加;然而当k增加到一定的值时,即k取较大的值时,随着k的增加,其正确率并没有随之增加,反而大大降低了。因此在实际中选择K的值时应慎重考虑,结合实
5、际结果,选取合适的K值。
此文档下载收益归作者所有