缺點示例
參考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)
("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'])
("score"
, score)
return score
常用演算法的優缺點
KNN k近鄰演算法
現在假如我們已經擁有了一些資料 稱為訓練資料集 ts,並且擁有所有資料的類別名 即每條資料應該歸於哪個類別。當我們要判斷一條不知類別的資料時,首先讓這條資料m和已經擁有的所有的資料ts中的每一條資料進行比較,然後根據比較結果選擇出和m最相似 一般是基於距離 的k條資料 k是個整數,並且通常是小於20...
kNN(k近鄰演算法)
k近鄰分析 knn 一 概述 knn演算法是一種有監督學習的分類演算法。所謂有監督學習,就是在應用演算法之前我們必須準備一組訓練集,訓練集中的每個例項都是由一些特徵和乙個分類標籤組成 通常還會存在乙個測試集,用來測試訓練出來的分類模型的準確性。其實knn演算法並沒有體現出有監督學習的所有特點,沒有模...
kNN k近鄰演算法
一 knn演算法的思想 knn演算法作為機器學習演算法中非常有效比較容易掌握的演算法,其基本思想是採用測量不同特徵值之間的距離的方法進行分類。knn屬於監督學習演算法,它的工作原理是 存在乙個樣本資料集,訓練樣本集,並且樣本集中的每個資料都存在標籤,即我們知道樣本集中每乙個資料與所屬分類的對應關係。...