KNN k近鄰演算法

2021-09-16 14:02:21 字數 1537 閱讀 3419

缺點示例

參考knn,全稱 k-nearestneighbor,可以用來執行分類、回歸任務。

knn通過觀察離**點最近的點的類別,來決定**點的類別,計算過程為:

計算訓練樣本和測試樣本中每個樣本點的距離(常見的距離度量有歐式距離,馬氏距離等);

對上面所有的距離值進行排序;

選前k個最小距離的樣本;

根據這k個樣本的標籤進行投票,得到最後的分類類別;

如下圖所示:

中間綠色的點是要**的點,藍色和紅色的點是已經**完的點。

該演算法的核心是如何獲取k個鄰居,即獲得距離最近的k個點。這裡的距離一般使用:

計算距離的演算法多種多樣,sklearn中常用的演算法有:

找到k個鄰居後,通過判斷多數鄰居的類別就可以計算出最終的類別,也可以為鄰居指定不同的權重:比如根據距離**點的距離設定不同的權重。也可以自定義權重規則。

什麼情況下選用knn演算法,沒有找到相關資料。

sklearn實現knn演算法的示例:

# train_data:訓練集

# test_data:測試集

# columns:列名

# n_neighbors:k個數

# weights:權重,uniform:一樣,distance:距離近的權重大,callable:自定義函式

# algorithm :

# p:1, using manhattan_distance (l1), 2, euclidean_distance (l2),否則是 minkowski_distance (l_p).

defkneighbors2

(train_data, test_data, columns, n_neighbors, weights, algorithm, p)

:print

("n_neighbors %s, weights %s, algorithm %s, p %s"

%(n_neighbors, weights, algorithm, p)

) knn = kneighborsregressor(n_neighbors=n_neighbors, weights=weights, algorithm=algorithm, p=p)

# fit:訓練集,目標值。

knn.fit(train_data[columns]

, train_data[

'price'])

score = knn.score(test_data[columns]

, test_data[

'price'])

print

("score"

, score)

return score

總結應用場景

常用演算法的優缺點

KNN k近鄰演算法

現在假如我們已經擁有了一些資料 稱為訓練資料集 ts,並且擁有所有資料的類別名 即每條資料應該歸於哪個類別。當我們要判斷一條不知類別的資料時,首先讓這條資料m和已經擁有的所有的資料ts中的每一條資料進行比較,然後根據比較結果選擇出和m最相似 一般是基於距離 的k條資料 k是個整數,並且通常是小於20...

kNN(k近鄰演算法)

k近鄰分析 knn 一 概述 knn演算法是一種有監督學習的分類演算法。所謂有監督學習,就是在應用演算法之前我們必須準備一組訓練集,訓練集中的每個例項都是由一些特徵和乙個分類標籤組成 通常還會存在乙個測試集,用來測試訓練出來的分類模型的準確性。其實knn演算法並沒有體現出有監督學習的所有特點,沒有模...

kNN k近鄰演算法

一 knn演算法的思想 knn演算法作為機器學習演算法中非常有效比較容易掌握的演算法,其基本思想是採用測量不同特徵值之間的距離的方法進行分類。knn屬於監督學習演算法,它的工作原理是 存在乙個樣本資料集,訓練樣本集,並且樣本集中的每個資料都存在標籤,即我們知道樣本集中每乙個資料與所屬分類的對應關係。...