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 眾所周知,電影可以按照題材分類,然而題材本身是如何定義的?由誰來判定某部電影屬於哪 個題材?也就是說同一題材的電影具有哪些公共特徵?這些都是在進行電影分類時必須...