knn(k-nearest neighbor)演算法是乙個簡單而經典的機器學習分類演算法,通過度量」待分類資料」和」類別已知的樣本」的距離對樣本進行分類。
from numpy import *
import operator
#產生資料集
defcreatedataset
(): groups = array([[1.0, 1.0], [1.0, 1.1], [0, 0], [0, 0.1]])
lables = ['a', 'a', 'b', 'b']
return groups, lables
#分類def
classify0
(intx, dataset, labels, k):
#1、計算到所有點的距離
datasetsize = dataset.shape[0]
diffmat = tile(intx, (datasetsize, 1)) - dataset
sqdiffmat = diffmat**2
sqdistances = sqdiffmat.sum(axis=1)
distances = sqdistances**0.5
#2、根據距離進行排序
sortedclasscount = sqdistances.argsort()
classcount = {}
#3、選取種類最多的類別
for i in range(k):
voteilabels = labels[sortedclasscount[i]]
classcount[voteilabels] = classcount.get(voteilabels, 0) + 1
sortedcount = sorted(classcount.iteritems(), key=operator.itemgetter(1), reverse=true)
return sortedcount[0][0]
defmain
(): groups,labels = createdataset()
result = classify0([0, 0], groups, labels, 3)
print result
main()
來自《機器學習實戰》一書,剛剛開始看,目前感覺還比較友好,繼續ing python機器學習理論與實戰(一)K近鄰法
機器學習分兩大類,有監督學習 supervised learning 和無監督學習 unsupervised learning 有監督學習又可分兩類 分類 classification.和回歸 regression 分類的任務就是把乙個樣本劃為某個已知類別,每個樣本的類別資訊在訓練時需要給定,比如人...
機器學習python實戰 k近鄰演算法
前一周學習了一些理論的知識,雖然懂了原理,但感覺真要寫起 來還是摸不著頭腦,所以接下來的幾天都打算在 方面下一番功夫。由於接觸python不久,且能力有限,難免有些錯誤的或者理解不到位的地方,希望讀者不吝指正!k 近鄰演算法 k nn 的基本原理 存在乙個樣本資料集合,也叫訓練樣本集,並且樣本集中的...
機器學習實戰 k 臨近演算法(一)
工作原理 存在乙個樣本資料集合,也稱為訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進行比較,然後演算法提取樣本集中特徵最相似資料 最鄰近 的分類標籤。一般來說,我們只選擇樣本資料集中前k...