機器學習演算法之 kNN k 鄰近演算法

2021-09-30 18:23:37 字數 1963 閱讀 6429

knn 演算法

k-臨近演算法,最基本的機器學習演算法之一,簡單講就是已有標本資料,計算**的資料和每個標本資料的特徵距離(如歐氏距離),

距離近的標本資料型別作為**資料的型別。

原理:已有訓練樣本集,新的資料和訓練樣本特徵比較,訓練樣本集中取特徵最相似資料的標籤。一般來說先找前k個最相似的

資料,這就是k-鄰近演算法的出處,然後k個最相似資料取出現次數最多資料的分類作為結果。

實現:1、 找出與測試資料距離最近的k個資料,取其**現次數最多的資料分類

2、 歸一化資料:有時特徵範圍不一樣導致影響計算,把所有特徵轉化到0-1之間,newvalue=oldvalue/(max-min)

距離計算距離公式:

兩個向量(x1,y1)和(x2,y2)的距離

演算法特點:

優點:精度高,對異常值不敏感,無資料輸入假定

缺點:計算複雜度高、空間複雜度高

python **例子

如下函式儲存到knn.py

def classify0(inx, dataset, labels, k):

datasetsize = dataset.shape[0]

#先把inx構造成重複datasetsize次的陣列,(datasetsize, 1)意思是變成二維陣列,不是一維陣列裡重複。再減去dataset

diffmat = tile(inx, (datasetsize, 1)) - dataset

sqdiffmat = diffmat ** 2

sqdinstance = sqdiffmat.sum(axis=1)

distances = sqdinstance ** 0.5

sortdistindicies = distances.argsort()

classcount={}

for i in range(k):

voteilabel = labels[sortdistindicies[i]]

classcount[voteilabel] = classcount.get(voteilabel, 0) + 1

#print(classcount)

sortclasscount = sorted(classcount.iteritems(), key = operator.itemgetter(1), reverse = true)

#print(sortclasscount)

return sortclasscount[0][0]

測試**,儲存到classifytest.py

#!/usr/bin/env python

#-*- coding:utf-8 -*-

from numpy import *

import operator

import knn

def createdataset():

group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]])

labels = ['a', 'a', 'b', 'b']

return group, labels

group, labels = createdataset()

#classres = classify0([0,0], group, labels, 3)

#print(classres)

def execute(inx):

group, labels = createdataset()

return knn.classify0(inx, group, labels, 3)

測試

>>> import classifytest

>>> classifytest.execute([0,0])

'b'

機器學習演算法之 KNN k鄰近演算法

k 鄰近演算法應該是機器學習中最簡單的演算法了,也很容易理解。場景 已知一組資料 點 並按照某些屬性對其進行了分類,比如 a,b,c,這就是資料的labels 對於新來的資料,已知其屬性,對其進行分類,加label。k近鄰對於如何分類的做法就是,根據屬性,1.求出未知點到已知所有點的距離 2.對所有...

機器學習 KNN K 最鄰近演算法

k 近鄰學習是一種常用的監督學習方法,比如 判斷乙個人的人品,只需要觀察與他來往最密切的幾個人的人品好壞就可以得出,即 近朱者赤,近墨者黑 理論 原理 物以類聚,人以群分 乙個對於knn演算法解釋最清楚的圖如下所示 藍方塊和紅三角均是已有分類資料,當前的任務是將綠色圓塊進行分類判斷,判斷是屬於藍方塊...

機器學習 KNN K 最鄰近演算法

knn分類演算法,是理論上比較成熟的方法,也是最簡單的機器學習演算法之一。該方法的思路是 如果乙個樣本在特徵空間中的k個最相似 即特徵空間中最鄰近 的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。knn演算法中,所選擇的鄰居都是已經正確分類的物件。該方法在定類決策上只依據最鄰近的乙個或者幾個...