knn主要應用於文字分類、聚類分析、**分析、降維等
中心思想是採用測量不同特徵值之間的距離方法進行分類
演算法非常簡單,不過這是乙個監督演算法,訓練資料需要經過人工標記。演算法中心思想是:計算候選樣本到所有訓練樣本之間的距離,選取k個最近距離資料中出現次數最多的分類作為新樣本的類別。
from numpy import *
import operator
defclassify0
(sample,dataset,labels,k):
samplearray=tile(sample,(dataset.shape[0],1))
distance=sum((samplearray-dataset)**2,1)
s=np.argsort(distance)
counter={}
for i in arange(k):
key=labels[s[i]]
if key in counter:
counter[key]=counter[key]+1
else:
counter[key]=1
c=sorted(counter.items(),key=operator.itemgetter(1),reverse=true)
return c[0][0];
計算距離時,不同的特徵的資料範圍不一樣。例如:樣本特徵包括身高、體重、飛行里程。其中飛行里程的數值相對身高和體重範圍很大。計算樣本之間距離時,飛行里程的差值會起到決定性作用,而一般認為所有的特徵應該是同樣重要,需要將數值歸一化到0到1之間: vn
=vov
max−
vmin
def
autonorm
(dataset):
datarange=dataset.max(axis=0)-dataset.min(axis=0)
dataset=dataset/tile(datarange,(dataset.shape[0],1))
return dataset
knn演算法簡單有效,但存在缺點:
計算量大,每次需要計算待分類樣本和全體已知樣本的距離,才能求取k個最近領域點,計算量大。因此,一般需要對已知樣本點進行剪輯(只對容量大的情況,且去除分類作用不大的樣本)。另外也有使用k決策樹,減少計算量和儲存空間。
訓練樣本集中某些類的樣本數量大,其他類的數量小。因此,需要採用加權方法。
機器學習之KNN
knn分類演算法 k nearest neighbors classification 即k近鄰演算法 給定乙個訓練資料集,對新的輸入例項,在訓練資料集中找到與該例項最鄰近的k個例項,這k個例項的多數屬於某個類,就把該輸入例項分類到這個類中。核心思想 要確定測試樣本屬於哪一類,就尋找所有訓練樣本中與...
機器學習之KNN
以下部落格主要由兩部分構成。一是理論講解,而是 實現 因為工程上使用knn的頻率不是很高,所以 不是目的,一些 中的技巧就顯得很重要了 首先knn是什麼?k nearest neighbors knn 以下的均來自 貪心科技 不是打廣告,純粹是尊重智財權。因為便於投票分類 怎麼選擇合適的k,一般會用...
機器學習之KNN
knn又叫做k鄰近,即k nearst neighbors,屬於分類任務 用待測樣本較近的幾個樣本來代表待測樣本 k值的選擇 k值較大容易欠擬合,k值較小容易過擬合,可以通過交叉驗證來選取乙個較好的值 距離的度量 一般選用歐幾里得距離 決策的規則 在分類時選用多數表決法或者加權的多數表決法 在做回歸...