import numpy as np
import operator
def createdataset():
group = np.array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['a','a','b','b']
return group,labels
def classify0(inx,dataset,labels,k):
datasetsize = dataset.shape[0]
#返回乙個5行一列的矩陣,每行和inx相同
diffmat = np.tile(inx,(datasetsize,1)) - dataset
#矩陣求平方是對其中每乙個元素求平方
sqdiffmat = diffmat**2
#axis=1表示對列求和
sqdistance = sqdiffmat.sum(axis=1)
distance = sqdistance**0.5
#返回按值從小到大排列的原始下標陣列
sorteddistindicies = distance.argsort()
classcount = {}
for i in range(k):
votelable = labels[sorteddistindicies[i]]
classcount[votelable] = classcount.get(votelable,0) + 1
#將字典元素按照第二項排序,sorted預設遞增排序,reverse取反
sortedclasscount = sorted(classcount.items(),
key = operator.itemgetter(1),reverse = true)
return sortedclasscount[0][0]
if __name__ == '__main__':
group,labels = createdataset()
labelpredict = classify0([0.5,0.6],group,labels,2)
print(labelpredict)
機器學習實戰 kNN
一 演算法過程 1 首先存在乙個資料集作為訓練樣本集dataset,比如訓練樣本的資料中,每一條資料都包含乙個城市的某一天空氣中的pm2.5,no2濃度等維度的特徵值。每一條資料同時包含乙個標籤,比如這一天的空氣質素是優,良,輕度汙染,中度汙染,重度汙染中的乙個。2 現在我們輸入一條資料inx,如包...
機器學習實戰 kNN
k 近鄰演算法 knn k nearest neighbors 測量不同特徵值之間的距離方法進行分類。有乙個樣本資料集 每個樣本都存在標籤 輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進行比較,提取樣本集中特徵最相似資料 最近鄰 的分類標籤。一般,只選擇樣本資料中前k個最相似的...
機器學習實戰 kNN演算法
今天看了第乙個機器學習演算法 k 鄰近演算法。大概意思就是,先根據已有分劃分好類別的資料集,然後輸入新的資料向量,就計算與資料集裡各個向量的距離,排序找到前k個資料,統計前k資料中各個類別 標籤 出現的次數,最多的那個類別 標籤 就是輸入向量所屬的類別,然後返回。哈哈get乙個機器學習的演算法開心。...