k近鄰演算法(kNN) 簡單粗暴

2021-07-23 22:14:44 字數 1392 閱讀 3067

這是乙個簡單粗暴的分類器(classifier)演算法,分類效果不錯,但是對於異常值不敏感,而且演算法的複雜度高,每次計算都要遍歷整個訓練集(training data set),效率不高.

knn演算法的思想就是把整個訓練集在依照特徵值座標軸標定後,把測試量標定到特徵值空間後,計算測試量與所有訓練資料的距離,按照距離從小到大排列,選取距離最小的k個訓練點,統計這k個點的labels數量最多的label就是knn得到的分類結果(簡單說,就是測試量和訓練集的哪個(些)量最相似)。

考慮兩組特徵量(a、b),a的數量級為1,b的數量級為100000,當用距離來衡量相似性時,b的大小遠大於a,所以只有b在起作用,a被忽略了,然而我們是想a、b的權重一樣的,所以我們要把a、b歸一化,以使得a、b一起決定距離.

歸一化公式:

python **如下:

def

autonorm

(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)))/tile(ranges, (m,1))

return normdataset, ranges, minvals

手寫數字識別demo:

k=15

2.3m訓練集資料

準確度較高(與訓練集和個人書寫習慣相關性大)

K 近鄰演算法 KNN

knn k nearest neighbor 假設訓練集有記錄 r1 r2,rn共n條,訓練集的特徵向量及其對應的類別都是已知的,每個記錄的特徵向量為 t1 t2,tk共k個特徵,待測試的記錄為ru 1 計算ru 的特徵向量與訓練集的每條記錄 即r1 r2,rn 的特徵向量的歐式距離,選取距離最小的...

k近鄰演算法 kNN

核心思想 前k個最相似資料中出現次數最多的類別,作為新資料的類別。核心函式 計算距離函式,投票函式 coding utf 8 import random import sys from collections import counter from operator import itemgette...

K近鄰演算法 KNN

k近鄰演算法 knn 何謂k近鄰演算法,即k nearest neighbor algorithm,簡稱knn演算法,單從名字來猜想,可以簡單粗暴的認為是 k個最近的鄰居,當k 1時,演算法便成了最近鄰演算法,即尋找最近的那個鄰居。為何要找鄰居?打個比方來說,假設你來到乙個陌生的村莊,現在你要找到與...