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 歐氏...