機器學習K 近鄰演算法

2021-10-18 16:22:44 字數 1765 閱讀 8723

如果乙個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。

兩個樣本的距離可以通過如下公式計算,又叫歐式距離

在機器學習過程中,對於函式 dist(., .)dist(.,.),若它是一"距離度量" (distance measure),則需滿足一些基本性質:

計算已知類別資料集中的點與當前點之間的距離

按距離遞增次序排序

選取與當前點距離最小的k個點

統計前k個點所在的類別出現的頻率

返回前k個點出現頻率最高的類別作為當前點的**分類

別計算每個電影和被**電影的距離(搞笑鏡頭、擁抱鏡頭、打鬥鏡頭相減後的歐式距離)

k=5,取距離最近的5部**現頻率最高的類別,即為被**電影類別。

from sklearn.neighbors import kneighborsclassifier

# 1.構造資料

x =[[1

],[2

],[3

],[4

]]y =[0,

0,1,

1]# 2.訓練模型

# 2.1 例項化乙個估計器物件

estimator = kneighborsclassifier(n_neighbors=3)

# 2.2 呼叫fit方法,進行訓練

estimator.fit(x, y)

# 3.資料**

ret = estimator.predict([[

2.51]]

)print

(ret)

# 可以這樣理解, x是特徵值, 是dataframe形式理解為二維的,

# y表示的目標值, 可以表示為series, 表示為一維陣列

ret1 = estimator.predict([[

2.52]]

)print

(ret1)

k-近鄰演算法中k 的選取一般稱為「超引數」的確定,一般都是通過實驗值或者經驗確定。

李航博士的一書「統計學習方法」上所說:

選擇較大的k值,就相當於用較大領域中的訓練例項進行**,

k=n(n為訓練樣本個數),則完全不足取。因為此時無論輸入例項是什麼,都只是簡單的**它屬於在訓練例項中最多的類,模型過於簡單,忽略了訓練例項中大量有用資訊。

在實際應用中,k值一般取乙個比較小的數值,例如採用交叉驗證法(簡單來說,就是把訓練資料在分成兩組:訓練集驗證集)來選擇最優的k值。

對現有訓練集的訓練誤差,關注訓練集

如果近似誤差過小可能會出現過擬合的現象,對現有的訓練集能有很好的**,但是對未知的測試樣本將會出現較大偏差的**。

模型本身不是最接近最佳模型

可以理解為對測試集的測試誤差,關注測試集

估計誤差**明對未知資料的**能力好,

模型本身最接近最佳模型。

機器學習 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 歐氏...