(1) knn演算法簡介:
knn演算法,即k近鄰演算法是一種監督學習演算法,本質上是要在給定的訓練樣本中找到與某乙個測試樣本a最近的 k個例項,然後統計k個例項中所屬類別計數最多的那個類,據他們的主要分類來決定新資料的類別。
(2) knn演算法的三個要點:
①k的選擇:
k值是knn演算法中為數不多的引數之一, k值的選擇也直接影響著模型的效能。如果我們把k值設定的比較小,那麼意味著我們期望個到乙個更複雜和更精確的模型,同時更加容易過擬合 ;相反,如果k值越大,模型機會越簡單,乙個很極端的例子就是如果將k值設定的與訓練樣本數量相等,即k-n那麼無論是什麼類別的測試樣本最後的測試結果都會是測試樣本中數量最多的那個類。
②距離的度量:
距離的度量描述了測試樣本與訓練樣本的臨近程度,這個臨近程度就是k個樣本選擇的依據,在knn演算法中 ,如果特徵是連續的,那麼距離函式一般用曼哈頓距離或歐氏距離,如果特徵是離散的,一般選用漢明距離。"
③分類決策規則:
通過上面提到的k與距離兩個概念,就能選擇出k個與測試樣例最近的訓練樣本,如何根據這k個樣本決定測試樣例的類別就是knn的分類決策規則,在knn中最常用的就是多數表決規則,但是該規則嚴重依賴於訓練樣本的數目。
(3) knn演算法的優缺點:
①優點:簡單,易於理解,易於實現,無需估計引數,無需訓練。適合對稀有事件進行分類(例如當流失率很低時,比如低於0.5%,構造流失**模型)特別適合於多分類問題(multi-modal,物件具有多個類別標籤),例如根據基因特徵來判斷其功能分類, knn比svm的表現要好。
②缺點:懶惰演算法,對測試樣本分類時的計算量大,記憶體開銷大,評分慢,可解釋性較差,無法給出決策樹那樣的規則。
(4) knn演算法的常見問題:
①k值設定為多大?
k太小,分類結果易受雜訊點影響; k太大,近鄰中又可能包含太多的其它類別的點。k值通常是採用交叉檢驗來確定(以k-1為基準) ,總的來說k-般低於訓練樣本數的平方根。
②類別如何判定最合適?
投票法沒有考慮近鄰的距離的遠近,距離更近的近鄰也許更應該決定最終的分類,所以加權投票法更恰當些。
③如何選擇合適的距離衡量?
高維度對距離衡量的影響為當變數數越多,歐式距離的區分能力就越差。變數值域對距離的影響為值域越大的變數常常會在距離計算中佔據主導作用,因此應先對變數進行標準化
④訓練樣本是否要一視同仁?
在訓練集中,有些樣本可能是更值得依賴的。可以給不同的樣本施加不同的權重,加強依賴樣本的權重,降低不可信賴樣本的影響。
⑤效能問題?
knn是一種懶惰演算法,平時不好好學習,考試(對測試樣本分類)時才臨陣磨槍(臨時去找k個近鄰)懶惰的後果:構造模型很簡單,但在對測試樣本分類地的系統開銷大,因為要掃瞄全部訓練樣本並計算距離。
(5) knn演算法在影象處理中的應用
1) knn在影象問題中較少使用,這個觀點**於斯坦福cs231n,原因有兩個: ①很差的測試效率,樣本量越大,分類過程就會越慢。②整個影象水平的距離度非常不直觀。
2) halcon中的knn分類器例程:
① classify image class knn.hdev
②set params class knn.hdev
③ nearest neighbors.hdev
簡述KNN演算法及實現
numpy中shape 0 返回陣列的行數,shape 1 返回列數 datasetsize dataset.shape 0 將intx在橫向重複datasetsize次,縱向重複1次 例如intx 1,2 1,2 1,2 1,2 1,2 便於後面計算 diffmat np.tile intx,da...
kNN演算法及python實現
knn演算法又稱為k近鄰分類 k nearest neighbor classification 演算法,可以解決分類和回歸的問題。knn演算法主要是通過距離判定出訓練集中離待測樣本最近的k個樣本,然後統計這k個樣本的類別,次數最多的類別或加權後距離最小的點的類別為新資料的類別。距離越近,類別判定的...
KNN應用及演算法簡單實現
鳶尾 yu n w i 學名 iris tectorum maxim.iris 資料集,統計學常用資料集 fromsklearn importneighbors fromsklearn importdatasets knn neighbors.kneighborsclassifier iris da...