機器學習實戰筆記——KNN

機器學習實戰——讀書筆記機器學習

書籍奉上👇👇👇學習

連接:https://pan.baidu.com/s/1Z0gI2xeu7GZjWVPmjxBBkQ 
提取碼:7u0n 測試

裏邊還有一些其餘的書你們也能夠看看,我的以爲不錯~spa

最近在看機器學習實戰這本書,寫的筆記用於幫助本身學習,歡迎你們指導~code

KNN——2.1.1中的代碼,其餘的代碼會隨着個人讀書進度記錄blog

歐氏距離公式:排序

 

 1 '''
 2 機器學習實戰——KNN基礎代碼實現
 3 
 4 '''
 5 
 6 from numpy import *
 7 import operator
 8 
 9 def createDataSet():
10     group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) # 特徵矩陣
11     labels = ['A', 'A', 'B', 'B'] # label向量
12     return group, labels
13 
14 # 參數:inX:測試數據 dataSet:特徵矩陣 labels:label向量 k:k個近鄰
15 def classify0(inX, dataSet, labels, k):
16     dataSetSize = dataSet.shape[0] #獲取特徵矩陣的行數
17     # 計算歐式距離(兩種方法)
18     # 方法一
19     # diffMat = tile(inX,(dataSetSize,1)) - dataSet
20     # sqDiffMat = diffMat**2
21     # sqDistances = sqDiffMat.sum(axis=1)
22     # distances = sqDistances ** 0.5
23     # 方法二
24     diffMat = inX - dataSet # 矩陣的廣播機制
25     sqDiffMat = diffMat ** 2
26     sqDistances = sqDiffMat.sum(axis=1)
27     distances = sqDiffMat ** 0.5
28 
29     # 對計算出的距離進行排序,以獲得最近的點
30     sortedDistIndicies = distances.argsort()
31     classCount={}
32     for i in range(k):
33         voteIlabel = labels[sortedDistIndicies[i]]
34         classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1 # get(value,default) value:返回此鍵的值,default:若是此鍵不存在返回0
35     # 根據字典的值對字典進行排序
36     sortedClassCount = sorted(classCount.items(), key = lambda item:item[1], reverse = True)
37     return sortedClassCount[0][0]
38 
39 group, labels=createDataSet()
40 
41 result=classify0(np.array([[10,0]]),group,labels,3)
42 print(result)
相關文章
相關標籤/搜索