機器學習 K 近鄰演算法

2021-10-23 19:15:37 字數 1760 閱讀 1420

k-近鄰演算法採用測量不同特徵值之間的距離方法進行分類

1.存在乙個樣本資料集合(訓練樣本集),並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。

2.輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進行比較,然後演算法提取樣本集中特徵最相似資料(最近鄰)的分類標籤。

3.只選擇樣本資料集中前k個最相似資料,k是不大於20的整數。

4.選擇k最相似的資料,做為新資料的分類。

歐氏距離公式:

例如:點(0, 0)與(1,2)之間的距離計算為:

例如:資料集存在4個特徵值,則點(1,0,0,1)與(7,6,9,4)之間的距離計算為:

利用歐式距離實現k-近鄰演算法:

def classify0 (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 = {}

for i in range(k):

voteilabel = lables[sorteddistindicies[i]]

classcount[voteilabel] = classcount.get(voteilabel, 0) + 1

sortedclasscount = sorted(classcount.items(), key = operator.itemgetter(1), reverse = true)

return sortedclasscount[0][0]

歸一化資料:當資料集中某一項資料有著不通過取值範圍時,我們就採用將數值歸一化

def autonum(dataset):

minvals = dataset.min(0)

maxvals = dataset.max(0)

ranges = maxvals - minvals

normdataset = zeros(shape(dataset))

m = dataset.shape[0]

normdataset = dataset - tile(minvals, (m, 1))

normdataset = normdataset / tile(ranges, (m, 1))

return normdataset, ranges, minvals

優點:精度高、對異常值不敏感、 無資料輸入假定

缺點:計算複雜度高、 空間複雜度高

適用資料範圍:數值型和標稱型

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