k-l近鄰演算法採用的是不同特徵值之間距離 來進行分類的,其優點是精度比較高,缺點空間複雜度高(因為要計算所有點的距離)
原理:knn演算法是存在乙個樣本資料集合,由於其實監督學習演算法的一種,所以每個資料存在標籤,即我們知道樣本集中每乙個資料與所屬分類的對應關係。輸入新資料時,新資料與樣本空間k個最相似的(最鄰近)的樣本大多數屬於哪個類,那麼其就是哪個類。通常情況下k取不大於20的整數,舉乙個電影分類的例子:樣本集是我們的前六個電影,我們想知道最後乙個是哪種型別
我們得到需要分類的樣本於樣本集中的空間距離如下
這裡我們去k為3時候,我們發現距離最近的3個電影california man,he's not really into dudes,beautiful woman 分類中大多數(這裡是全部)為愛情片,所以這裡我們預計我們的樣本也屬於愛情片,怎麼樣,簡單吧。
這裡我們使用非常強大的python語言來實現我們的knn演算法。
我們首先建立乙個knn.py檔案,貼入以下**:
from numpy import *
import operator
import os
def createdataset():
group = array([[1.0,1.1],[1.0,1.0],[0.0,0.0],[0.0,0.1]])
labels = ['a','a','b','b']
return group, labels
def classify0(inx,dataset,labels,k):
datasetsize = dataset.shape[0]# return the number of digit
diffmat = tile(inx,(datasetsize,1))-dataset #build a similar style of matrix
#calculate the distance of the points
sqdiffmat = diffmat**2
sqdistances = sqdiffmat.sum(axis=1)
distances = sqdistances**0.5
sortedindicies = distances.argsort()
classcount = {}
for i in range(k):
voteilabel = labels[sortedindicies[i]]
classcount[voteilabel] = classcount.get(voteilabel,0)+1 #0 means default 0
#find the max index in the classcount
maxcount = 0
for keys,values in classcount.items():
if values > maxcount :
maxcount = values
maxindex = keys
return maxindex
執行如下**:
import knn
from numpy import *
dataset, labels = knn.createdataset()
testx = array([1.0, 1.0])
k = 3
outputlabel = knn.classify0(testx, dataset, labels, 3)
print "your input is:", testx, "and classified to class: ", outputlabel
testx = array([0.1, 0.3])
outputlabel = knn.classify0(testx, dataset, labels, 3)
print "your input is:", testx, "and classified to class: ", outputlabel
最終可以看到分類的結果 機器學習之KNN
knn主要應用於文字分類 聚類分析 分析 降維等 中心思想是採用測量不同特徵值之間的距離方法進行分類 演算法非常簡單,不過這是乙個監督演算法,訓練資料需要經過人工標記。演算法中心思想是 計算候選樣本到所有訓練樣本之間的距離,選取k個最近距離資料中出現次數最多的分類作為新樣本的類別。from nump...
機器學習之KNN
knn分類演算法 k nearest neighbors classification 即k近鄰演算法 給定乙個訓練資料集,對新的輸入例項,在訓練資料集中找到與該例項最鄰近的k個例項,這k個例項的多數屬於某個類,就把該輸入例項分類到這個類中。核心思想 要確定測試樣本屬於哪一類,就尋找所有訓練樣本中與...
機器學習之KNN
以下部落格主要由兩部分構成。一是理論講解,而是 實現 因為工程上使用knn的頻率不是很高,所以 不是目的,一些 中的技巧就顯得很重要了 首先knn是什麼?k nearest neighbors knn 以下的均來自 貪心科技 不是打廣告,純粹是尊重智財權。因為便於投票分類 怎麼選擇合適的k,一般會用...