機器學習之KNN

2021-07-06 08:41:32 字數 1242 閱讀 1110

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值較小容易過擬合,可以通過交叉驗證來選取乙個較好的值 距離的度量 一般選用歐幾里得距離 決策的規則 在分類時選用多數表決法或者加權的多數表決法 在做回歸...