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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM