机器学习实战笔记——KNN

机器学习实战——读书笔记

书籍奉上👇👇👇

链接:https://pan.baidu.com/s/1Z0gI2xeu7GZjWVPmjxBBkQ 
提取码:7u0n

里边还有一些其他的书大家也可以看看,个人觉得不错~

最近在看机器学习实战这本书,写的笔记用于帮助自己学习,欢迎大家指导~

KNN——2.1.1中的代码,其他的代码会随着我的读书进度记录

欧氏距离公式:

 

 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)

 

posted @ 2019-06-18 20:50  张知行  阅读(310)  评论(0编辑  收藏  举报