如果乙個樣本在特徵空間中的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]]
(ret)
# 可以這樣理解, x是特徵值, 是dataframe形式理解為二維的,
# y表示的目標值, 可以表示為series, 表示為一維陣列
ret1 = estimator.predict([[
2.52]]
(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 歐氏...