參考(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提供了最近鄰分類的命令和代碼,可以直接調用。