【算法3】 KNN

    最簡單的機器學習算法——K-近鄰算法(K-Nearest Neighbor),縮寫KNN,通過計算距離來判定樣本是否所屬同一類。

K-NN的算法思想

算距離
    給定測試對象 ????, 計算它與訓練集中每個對象的距離。依據公式計算 ???? 與 ?1 ,?2, … … ?j之間的相似度, 得到??? (????, ?1), ??? (????, ?2), ??? (????, ?j)。
找鄰居
    圈定距離最近的k個訓練對象, 作爲測試對象的近鄰。將??? (????, ?1), ??? (????, ?2), ??? (????, ?j)排序, 若是超過相似度閾值?, 則放入鄰居集合??.
做分類
    根據這k個近鄰歸屬的主要類別, 來對測試對象進行分類。自鄰居集合??中取出前k名, 查看它們的標籤, 對這k個點的標籤求和, 以多數決定, 得到????可能類別。

數學原理

    K-NN涉及的數學原理只有距離公式,計算距離的方法很多,這裏採用歐氏距離。下圖給處理在二維、三維座標中的計算歐氏距離的表達式:
在這裏插入圖片描述    當特徵數量有很多個形成多維空間時, 再用上述的寫法就不方便了, 我們換一個寫法, 用 XX 加下角標的方式表示特徵維度。 則在n維空間中, 有兩個點 AABB, 它們的座標分別爲:在這裏插入圖片描述
AABB的歐氏距離d(A,B)d(A,B)表達式如下:
在這裏插入圖片描述

手稿

在這裏插入圖片描述

R | Python的實現

    KNNKNN在R | Python 中 均可手動編程實現,也有對應的R第三方包classclass來實現KNNKNN,Python中也有對應的第三方庫來實現。

#R代碼
library(class)
knn_model = knn(train,test,cl,k = i)

python代碼點我
    後期抽時間補上R手動編程源碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章