機器學習之knn實現

2021-06-22 17:45:34 字數 2166 閱讀 7356

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,一般會用...