參考文章:
k近鄰(knn)是一種基本分類與回歸方法。其思路如下:給乙個訓練資料集和乙個新的例項,在訓練資料集中找出與這個新例項最近的
k 個訓練例項,然後統計最近的
k個訓練例項中所屬類別計數最多的那個類,就是新例項的類。其流程如下所示:
計算訓練樣本和測試樣本中每個樣本點的距離(常見的距離度量有歐式距離,馬氏距離等);
對上面所有的距離值進行排序;選前k
個最小距離的樣本;
根據這k
個樣本的標籤進行投票,得到最後的分類類別;
knn的特殊情況是k=
1 的情況,稱為最近鄰演算法。對輸入的例項點(特徵向量)
x ,最近鄰法將訓練資料集中與
x最近鄰點的類作為其類別。
k 值的選擇
距離的度量(常見的距離度量有歐式距離,馬氏距離)
分類決策規則(多數表決規則)
k值越小表明模型越複雜,更加容易過擬合但是
k 值越大,模型越簡單,如果k=
n的時候就表明無論什麼點都是訓練集中類別最多的那個類
所以一般
k 會取乙個較小的值,然後用過交叉驗證來確定
這裡所謂的交叉驗證就是將樣本劃分一部分出來為**樣本,比如95%訓練,5%**,然後
k分別取1,2,3,4,5之類的,進行**,計算最後的分類誤差,選擇誤差最小的
k
knn演算法使用的距離一般是歐式距離,也可以是更一般的lp
距離或者馬氏距離,其中lp
距離定義如下:
lp(x
i,xj
)=(∑
l=1n
|x(l
)i−x
(l)j
|p)1
p
這裡 xi
=(x(
1)i,
x(2)
i,..
.x(n
)i)t
,xj=
(x(1
)j,x
(2)j
,...
,x(n
)j)t
,然後 p
≥1。 當
p=2 ,稱為歐式距離,即
l2(x
i,xj
)=(∑
l=1n
|x(l
)i−x
(l)j
|2)1
2 當
p=1 ,稱為曼哈頓距離,即 l
1(xi
,xj)
=∑l=
1n|x
(l)i
−x(l
)j| 當
p=∞ ,它是各個座標距離的最大值,即 l
∞(xi
,xj)
=max
l|x(
l)i−
x(l)
j|馬氏距離如下定義:
在找到最近的
k 個例項之後,可以計算這
k個例項的平均值作為**值。或者還可以給這
k 個例項新增乙個權重再求平均值,這個權重與度量距離成反比(越近權重越大)。
優點思想簡單,理論成熟,既可以用來做分類也可以用來做回歸;
可用於非線性分類;
訓練時間複雜度為o(
n);
機器學習 k 近鄰演算法
一.k 近鄰演算法概述 簡單地說,k 近鄰演算法採用測量不同特徵值之間的距離方法進行分類。k 近鄰演算法 knn 它的工作原理是 存在乙個樣本資料集,也稱訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將資料的每個特徵與樣本集合中資...
機器學習 K近鄰演算法
用例一 from sklearn.neighbors import nearestneighbors import numpy as np x np.array 1,1 2,1 3,2 1,1 2,1 3,2 nbrs nearestneighbors n neighbors 2,algorithm...
機器學習 K近鄰演算法
工作原理 存在乙個訓練樣本資料集合,每組資料對應乙個標籤及分類 比如下邊例子為前兩個資料都為a類 輸入測試樣本後通過計算求出測試樣本與訓練樣本的歐氏距離d,取前k個最小的值,這k組資料對應的標籤分類最多的那種,就是測試樣本的標籤。訓練樣本資料 1.0,1.1 1.0,1.0 0,0 0,0.1 歐氏...