KNN的算法過程如下:從上圖中我們可以看到圖中的數據集是好數據,也就是所有的數據集都有標簽,壹個是藍色正方形,壹個是紅色三角形,綠色圓圈是我們要分類的數據。
如果K=3,那麽離綠點最近的有兩個紅色三角形和1個藍色正方形,這三個點進行投票,因此要分類的綠點屬於紅色三角形。如果K=5,那麽離綠點最近的有兩個紅色三角形和三個藍色正方形,這五個點進行投票,因此要分類的綠點屬於藍色正方形。我們可以看到,KNN基本上是基於數據統計方法!
事實上,許多機器學習算法也是基於數據統計的。KNN是壹種基於記憶的學習,也稱為基於實例的學習,屬於懶惰學習。也就是說,它沒有明顯的預訓練過程,但當程序開始運行時,它可以在將數據集加載到內存中後開始分類而無需訓練。具體來說,每當我來到壹個未知的樣本點時,我都會在附近找到K個最近的點進行投票。
KNN算法的實現取決於未知樣本與訓練樣本之間的“距離”。我們可以使用歐幾裏德距離算法來計算“距離”:
在找到k個最近的元組之後,將這些元組的相應值的平均值用作最終結果。