KNN演算法原理

2021-09-05 08:45:58 字數 1998 閱讀 1738

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個樣本中最多的類別 作為測試樣例的 類別。需要注...