k近鄰 KNN 的Python實現

2021-08-03 10:06:52 字數 1419 閱讀 1147

import numpy as np

# 使用knn分類

def knnclassify(newinput, dataset, labels, k):

numsamples = len(dataset)

# 計算尤拉距離

diff = np.tile(newinput, (numsamples, 1)) - dataset

squareddiff = diff ** 2

squareddist = np.sum(squareddiff, axis=1)

distance = squareddist ** 0.5

# 距離排序

sorteddistindices = np.argsort(distance)

# 計算前k個出現的次數

classcount = {}

for i in range(k):

votelabel = labels[sorteddistindices[i]]

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

# 找出最大的返回

maxcount = 0

for key, value in classcount.items():

if value > maxcount:

maxcount = value

maxindex = key

return maxindex

def main():

# 建立資料集

def createdataset():

group = [[1.0, 0.9], [1.0, 1.0], [0.1, 0.2], [0.0, 0.1]]

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

return group, labels

dataset, labels = createdataset()

testx = [1.2, 1.0]

outputlabel = knnclassify(testx, dataset, labels, 3)

print("測試資料:", testx, "被分類到: ", outputlabel)

testx = [0.1, 0.3]

outputlabel = knnclassify(testx, dataset, labels, 3)

print("測試資料:", testx, "被分類到: ", outputlabel)

if __name__ == '__main__':

exit(main())

測試資料: [1.2, 1.0] 被分類到:  a

測試資料: [0.1, 0.3] 被分類到: b

k近鄰 k NN 演算法的python實現

k nn演算法是實現分類的一種簡單有效的演算法,並且可以實現多類別分類。k nn演算法的三個要素為 距離度量 k值的選擇以及分類決策規則。本文採用歐式距離作為距離度量,近鄰數量選取為7,採用多數票方式決定樣本的型別。from sklearn import datasets import matplo...

k 近鄰演算法實現 k NN

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

python機器學習實現K 近鄰演算法(KNN

以下命令都是在瀏覽器中輸入。cmd命令視窗輸入 jupyter notebook 後開啟瀏覽器輸入 http localhost 8888 眾所周知,電影可以按照題材分類,然而題材本身是如何定義的?由誰來判定某部電影屬於哪 個題材?也就是說同一題材的電影具有哪些公共特徵?這些都是在進行電影分類時必須...