程式:
# 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進行資料分析。感覺目前章節的測試方法太渣,留著以後學了更...