knn演算法的計算過程
knn演算法的優點和缺點
k最近鄰(k-nearest neighbor,knn)演算法核心思想是如果乙個樣本在特徵空間中的k個最臨近的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。k通常是不大於20的整數。
三要素為:k值的選取,距離度量的方式和分類決策規則。
對於k值的選擇,沒有乙個固定的經驗,一般根據樣本的分布,選擇乙個較小的值,可以通過交叉驗證選擇乙個合適的k值,k通常是不大於20的整數。
選擇較小的k值,就相當於用較小的區域中的訓練例項進行**,訓練誤差會減小,只有與輸入例項較近或相似的訓練例項才會對**結果起作用,與此同時帶來的問題是泛化誤差會增大。換句話說,k值的減小就意味著整體模型變得複雜,容易發生過擬合。
選擇較大的k值,就相當於用較大區域中的訓練例項進行**,其優點是可以減少泛化誤差,但缺點是訓練誤差會增大。這時候,與輸入例項較遠(不相似的)訓練例項也會對**器作用,使**發生錯誤,且k值的增大就意味著整體的模型變得簡單。
乙個極端的情況是k等於樣本數m,此時完全沒有分類,此時無論輸入例項是什麼,都只是簡單的**它屬於在訓練例項中最多的類,模型過於簡單。
k值的選擇方法:
距離度量的方式有三種:歐式距離、曼哈頓距離、閔可夫斯基距離。
歐式距離:
d (x
,y)=
∑k=1
n(xk
−yk)
2d(x, y)=\sqrt^\left(x_-y_\right)^}
d(x,y)
=k=1
∑n(
xk−
yk)
2最常用的就是歐式距離。
曼哈頓距離:
d (x
,y)=
∑k=1
n∣xk
−yk∣
d(x, y)=\sum_^\left|x_-y_\right|
d(x,y)
=k=1
∑n∣
xk−
yk∣
閔可夫斯基距離:
d (x
,y)=
(∣x1
−y1∣
)p+(
∣x2−
y2∣)
p+…+
(∣xn
−yn∣
)pp=
∑i=1
n(∣x
i−yi
∣)pp
\begin-y_\right|\right)^+\left(\left|x_-y_\right|\right)^+\ldots+\left(\left|x_-y_\right|\right)^}=} ^\left(\left|x_-y_\right|\right)^}}\end
d(x,y)
=p(∣
x1−
y1∣
)p+(
∣x2
−y2
∣)p+
…+(∣
xn−
yn∣
)p=
p∑i=
1n(
∣xi
−yi
∣)p
我們可以發現,歐式距離是閔可夫斯基距離距離在p=2時的特例,而曼哈頓距離是p=1時的特例。
分類決策規則一般使用多數表決法。即如果乙個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。
輸入訓練集資料和標籤,輸入測試資料;
計算測試資料與各個訓練資料之間的距離;
按照距離的遞增關係進行排序,選取距離最小的k個點;
確定前k個點所在類別的出現頻率,返回前k個點中出現頻率最高的類別作為測試資料的**分類。
knn演算法的優點:
knn演算法的缺點:
KNN演算法原理
k nearestneighbor,翻譯為k最近鄰演算法,是資料探勘演算法中最簡單的一種演算法。我們先用乙個例子體會下。我們很容易知道,這些電影的型別,那麼當有一部新電影出現的時候,可不可以對其進行自動分類了?我們可以把打鬥次數看成 x 軸,接吻次數看成 y 軸,然後在二維的座標軸上,對這幾部電影進...
knn演算法原理
import pandas as pd import numpy as np def distance v1,v2 自實現距離計算 param v1 點v1 param v2 點v2 return 距離 法一 ndim len v1 summary 0 for i in range ndim sum...
KNN演算法原理與實現
knn k nearest neighbors 演算法不需要訓練過程,直接利用樣本之間的距離進行分類。演算法的基本過程是 給定乙個測試樣例,分別計算它與訓練集中所有樣本之間的距離,選取距離最小的k個訓練樣本對測試樣例的類別進行投票,最後將得票最多 在k個樣本中最多的類別 作為測試樣例的 類別。需要注...