ML KNN

k-th nearest neighbor (k-NN) k-NN 是監督式學習 (Supervised learning) 的一種,名稱非常簡明扼要,就是尋找「K 個最相近的鄰居」。 這個演算法在實作時,會找到附近 K 個最近的點,根據鄰居的類別來判斷自己要歸在哪一類。雖然它是監督式學習,但其實並不需要訓練模型參數,而是將所有訓練資料儲存起來進行即時對比。 我們可以藉由調整 K 的數值來增加演算法的 Noise Margin。然而,此演算法存在著儲存空間需求大(空間複雜度高)的問題,且容易受到數據不平衡的影響。 在實作上,核心在於計算點與點之間的距離。我使用了 Scipy 的函數來實作,為了方便觀察,先取 K=1,並將結果與 sklearn 的 KNN 進行比較。 實作思路是利用 for 迴圈計算每個測試資料與所有訓練資料的距離,並取最近者的類別作為預測結果。 準確率比較: sklearn knn : 0.9733 手刻 knn : 0.9467 My Github

2017-06-30 · 1 min read · 40 words · KbWen · ZH