参考(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提供了最近邻分类的命令和代码,可以直接调用。
时间: 2024-10-25 07:26:12