機器學習 11 k近鄰演算法

2021-10-10 02:13:23 字數 1269 閱讀 1620

給定乙個資料集,對新的輸入樣本,在資料集中找到與新的輸入樣本距離最近的k個樣本,將這k個樣本中最多數屬於某個類的那個類別當作新的輸入樣本的類別。

k近鄰最簡單的實現就是直接遍歷整個資料集,叫線性掃瞄(linear scan),但是這樣的話,需要將輸入的樣本和資料集中每個樣本進行度量距離,如果資料集很大的話,計算是非常耗時的。所以比較常見的是kd樹。

np.tile

from numpy import tile

defclassify0

(inx, dataset, labels, k)

: datasetsize = dataset.shape[0]

#距離計算

diffmat = tile(inx,

(datasetsize,1)

)- dataset

sqdiffmat = diffmat**

2#平方

sqdistances = sqdiffmat.

sum(axis=1)

#根號下平方相加

distances = sqdistances**

0.5#根號

sorteddistindicies = distances.argsort(

)#排序

classcount=

#選擇距離最小的k個點

for i in

range

(k):

voteilabel = labels[sorteddistindicies[i]

] classcount[voteilabel]

= classcount.get(voteilabel,0)

+1#排序,將classcount字典分解為元祖列表,匯入itemgeeter方法,按照第二個元素的次序對元祖進行排序

#此處排序為逆序,即從大到小排序,最後返回發生頻率最高的元素標籤。

sortedclasscount =

sorted

(classcount.items(

),key=operator.itemgetter(1)

,reverse=

true

)return sortedclasscount[0]

[0]# 為**資料所在分類:knn.classify0([0,0], group, labels, 3)

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