k-近臨算法及代碼實現

k-近臨算法(KNN)採用測量不同特徵值之間的距離方法進行分類。k-近鄰算法優點是精度高、對異常值不敏感、無數據輸入假定,缺點是計算複雜度高、空間複雜度高,適用數據範圍爲數值型和標稱型。

k-近鄰算法的工作原理:存在一個樣本數據集合(訓練樣本集),並且樣本集中每個數據都存在標籤,即我們知道樣本集中每一數據與所屬分類的對應關係。輸入沒有標籤的新數據後,將新數據的每個特徵與樣本集中數據對應的特徵進行比較。然後算法提取樣本集中特徵最相似數據(最近鄰)的分類標籤,一般,我們只選擇樣本數據集中前k個最相似的數據。選擇k個最相似數據中出現次數最多的分類,作爲新數據的分類。

“近鄰性”用距離度量,如歐式距離。


k-近鄰算法計算過程

(1)在算式之前,需要把每個屬性的值規範化,這有助於防止具有較大初始值域的屬性(如收入)比具有較小初始值域的屬性(如二元屬性)的權重過大。


(2)對於某未知元組進行分類,找出離它最近的k個點。k一般爲奇數是爲了更好的比較,作出判別,比如(k=5, 3:2)

(3)屬於哪一個類的多,就把這個待判別點(未知元組)判別爲哪一類。

      

      另外, KNN也可以用於數值預測,即返回給定未知元組的實數值預測。在這種情況下,分類器返回未知元組的K個最近鄰的實數值標號的平均值。

       如果屬性不是數值而是標稱的(或類別的)如顏色,如何計算距離?一種簡單的方法是比較元組X1和X2中對應屬性的值。如果兩者相同(元組X1、X2均爲藍色),則二者之間的差爲0,如果二者不同,則差爲1。

       KNN使用基於距離的比較,本質上賦予每個屬性相等的權重。當數據存在噪聲或不相關屬性時,準確率可能受到影響。然而,結合屬性加權和噪聲數據元組的剪枝。


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