k 近鄰演算法實現 k NN

2021-08-15 02:40:56 字數 1158 閱讀 5255

演算法思想:計算目標與樣本庫中所有樣本的距離,根據計算出來的距離將所有樣本由近到遠進行排序,取出前k個樣本,將這k個樣本中出現次數最多的型別作為目標的類別。

from numpy import *

import operator

defcreatedataset

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

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

return group, labels

defclassify0

(inx, dataset, labels, k):

datasetsize = dataset.shape[0]

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

sqdiffmat = diffmat ** 2

sqdistances = sqdiffmat.sum(axis=1)

distances = sqdistances ** 0.5

sorteddistindicies = distances.argsort()

classcount = {}

for i in range(k):

voteilabel = labels[sorteddistindicies[i]]

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

sortedclasscount = sorted(classcount.items(), key=operator.itemgetter(1), reverse=true)

return sortedclasscount[0][0]

defmain

(): dataset, label = createdataset()

print(classify0([0, 0], dataset, label, 3))

if __name__ == '__main__':

main()

[1] 哈林頓李銳. 機器學習實戰 : machine learning in action[m]. 人民郵電出版社, 2013.

K 近鄰演算法 KNN

knn k nearest neighbor 假設訓練集有記錄 r1 r2,rn共n條,訓練集的特徵向量及其對應的類別都是已知的,每個記錄的特徵向量為 t1 t2,tk共k個特徵,待測試的記錄為ru 1 計算ru 的特徵向量與訓練集的每條記錄 即r1 r2,rn 的特徵向量的歐式距離,選取距離最小的...

k近鄰演算法 kNN

核心思想 前k個最相似資料中出現次數最多的類別,作為新資料的類別。核心函式 計算距離函式,投票函式 coding utf 8 import random import sys from collections import counter from operator import itemgette...

K近鄰演算法 KNN

k近鄰演算法 knn 何謂k近鄰演算法,即k nearest neighbor algorithm,簡稱knn演算法,單從名字來猜想,可以簡單粗暴的認為是 k個最近的鄰居,當k 1時,演算法便成了最近鄰演算法,即尋找最近的那個鄰居。為何要找鄰居?打個比方來說,假設你來到乙個陌生的村莊,現在你要找到與...