knn - k nearest neighbor
演算法利用的數學思想極少
思想:對於乙個新來的點,根據判斷k個最近的點,來判斷新來的點的類別。
過程:
1)先計算新來的點與樣本中每乙個點的距離(尤拉距離)
2)找到最近的k個點 (可以用np.argsort)
3)找到k個點中類別最多的點的類
所以k鄰近演算法可以說是沒有模型的演算法,也可以說訓練集資料就是模型
在scikit-learn中呼叫這個knn演算法:
from sklearn.neighbors import kneighborsclassifier
knn_classifier = kneighborsclassifier(n_neighbors = 6) #n_neighbors就是k的值
knn_classifier.fit(x_train, y_train) #擬合
knn_classifier.predict(x)
超參
在前面的做法中 k個相鄰節點的權重都相同,這說明在這k個節點中,離測試點最近最遠的點的影響是一樣的,所以加上權重可能讓我們的模型更好
在sklearn.neighbors.kneighborsclassifier 下有乙個引數就是weights,我們可以通過這個來設定
有時候我們也不單單使用尤拉距離,我們也會使用曼哈頓距離、明可夫斯基距離((∑|xi-yi|^p)^(1/p) (i=1,2,...n))
但是在這個演算法下仍然有很大的缺陷:
1)效率低下就是乙個很大的問題,訓練集有m個樣本,每個樣本有n個feature的話 那麼演算法複雜度就是o(m * n)
通常優化這個演算法會使用樹結構(kd-tree, ball-tree)
2)對outlier太敏感了
3)可能沒法去解釋這個演算法
4)維數災難:對於高維的feature,距離可能會非常巨大 通常通過pca去降維後處理
機器學習之KNN k最近鄰演算法 機器學習
knn演算法是機器學習中入門級演算法,屬於監督性學習演算法。supervisedlearning.通過plinko遊戲來介紹該演算法。就是隨機在上面投球,然後球進下面的哪個地方就得多少分。然後在規定得投次數得到最高得分數,應該怎麼投?然後 每次投能得到多少分?首先應該通過訓練資料集,看看在每個位置投...
機器學習之KNN K近鄰演算法(二 演算法案例)
目錄 一 knn的簡單實現案例 二 sklearn的knn應用 鳶尾花資料分類 三 sklearn中knn的重要引數 假設我們有兩類樣本 a和b,均為二維資料,a類包括 2,8 2.5,10 2,9 b類包括 4,2 4,1 4.5,3 測試樣本點為 3,9 首先匯入資料,資料分布如下圖 impor...
機器學習筆記 1 KNN K 近鄰演算法
k近鄰法 k nearest neighbor.k nis 是一種基本分類與回歸方法,k值的選擇 距離度量及分類決策規則 多數表決 是k近鄰法的三個基本要素。工作原理 將沒有標籤的新資料的每個特徵與樣本集中資料對應的特徵進行比較,然後提取樣本集中特徵最相似資料 最近鄰 的分類標籤。1.假設有乙個帶有...