機器學習實戰之knn演算法

2021-07-31 10:17:04 字數 1503 閱讀 7695

程式:

# author: xiaoyun

from numpy import *

import operator

def createdataset():

group = array([[1.0, 0.9], [1.0, 1.0], [0.1, 0.2], [0.0, 0.1]])

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

return group, labels

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

numsamples = dataset.shape[0] 

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

squareddiff = diff ** 2 

squareddist = sum(squareddiff, axis=1)

distance = squareddist ** 0.5

sorteddistindices = argsort(distance)

classcount = {}

for i in range(k):

votelabel = labels[sorteddistindices[i]]

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

##  找到value最大的那個值,迴圈比較法。

maxcount = 0

for key, value in classcount.items():

if value > maxcount:

maxcount = value

maxindex = key

return maxindex

# 主程式,修改了一點

testx = array([1.2, 1.0])

k = 3

dataset, labels =createdataset()

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

print ("your input is %s,and classified to class:%s " %(testx, outputlabel))

testx = array([0.1, 0.3])

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

print ("your input is:%s,and classified to class:%s "%(testx, outputlabel))

1·tile那兒將輸入資料複製成一行四列的陣列,然後減去goup中的值,2·argsort函式將得到的歐式距離排序後的索引按照陣列輸出(更節儉)

,3·classcount[votelabel] = classcount.get(votelabel, 0) + 1,這是個字典的賦值語句

機器學習實戰之KNN演算法

1 knn分類演算法介紹 演算法實現原理 存在乙個樣本資料集,將需要分類的輸入值與樣本資料集計算歐式距離,將歐式距離由小到大進行排序,取前k次最小距離對應的樣本資料集,對該樣本資料集的類別進行統計,其 現次數最多的類別為輸入值的預判類別。歐式距離計算公式 假設a點座標為 x1,y1 b點座標為 x2...

《機器學習實戰》之knn演算法

買了王斌老師翻譯的 機器學習實戰 一書,裡面全是乾貨,既可以練python,又可以學習機器學習演算法知識,挺不錯的,學習一些東西這裡分享下。k 近鄰演算法 knn 它的核心思想就一句話,如果兩個東西各方面屬性都很相似,那麼這兩個東西屬於同一類。k的意思是有很多東西和你要判斷的東西相似 稱作x 那麼找...

機器學習實戰之knn演算法pandas

機器學習實戰之knn演算法pandas,供大家參考,具體內容如下 開始學習機器學習實戰這本書,打算看完了再回頭看 周志華的 機器學習。機器學習實戰的 都是用numpy寫的,有些麻煩,所以考慮用pandas來實現 也能回顧之前學的 用python進行資料分析。感覺目前章節的測試方法太渣,留著以後學了更...