机器学习实战笔记——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)
https://www.cnblogs.com/zhangzhixing/