首页 > 代码库 > kNN的matlab实现

kNN的matlab实现

参考(http://blog.sina.com.cn/s/blog_8bdd25f80101d93o.html),最后几行修改为

%k近邻,取k=7,交叉验证法如何确定k的值???? %选取7个最小值,用最简单的比较法试

M=[];

for i=1:210    

M=[M distance(x,y,xnew(i,1),xnew(i,2))];

end

Mnew=sort(M);

for i=1:7 array(i)=find(M==Mnew(i)); end

plot(xnew(array,1),xnew(array,2),‘r‘)

技术分享
 
方块点 是测试点,对应的7个最近邻用红线相连。
 
可见,为了得到测试点的分类结果,需要把最近邻的下标记录下来,进而能查到最近邻的类别。其方法是,首先计算测试点到所有点的距离,再由小到大排序,可得到多个最小的距离;进而用find函数查找这些值在所有距离数据中的位置,也就是对应的最近邻的下标。进一步可得到最近邻的类别。简单扩展后,能得到分类成功率,评价最近邻数目的影响,得到更合适的参数。
 
当然,matlab提供了最近邻分类的命令和代码,可以直接调用。

kNN的matlab实现