《机器学习实战》学习笔记——kNN
来源:互联网 发布:UC数据库设计 编辑:程序博客网 时间:2024/05/22 10:34
原始代码:
程序清单0:
from numpy import *import operatordef createDataSet(): group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]]) labels = ['A', 'A', 'B', 'B'] return group, labels
执行:
>>>import knn>>>group, labels = knn.createDataSet()>>>group array([[ 1. , 1.1], [ 1. , 1. ], [ 0. , 0. ], [ 0. , 0.1]])>>>labels ['A', 'A', 'B', 'B']
程序清单2-1:
程序清单2-1和上面的程序清单0是在一个.py文件里,是紧接着上面的代码写的
def classify0(inX, dataSet, labels, k): #shape[0]获取行 shape[1] 获取列 dataSetSize = dataSet.shape[0] #tile将inX扩充为dataSetSize行1倍inX列的矩阵 diffMat = tile(inX, (dataSetSize,1)) - dataSet #下面三行代码计算距离 sqDiffMat = diffMat**2 sqDistances = sqDiffMat.sum(axis=1) distances = sqDistances**0.5 #用argsort函数返回的是,数组每个元素从小到大排序后的索引值,即第1、2、3...的位置序号 sortedDistIndicies = distances.argsort() #字典:key:label,value:前k个点中,该label的点的个数 classCount = {} #投票并统计票数最多的label for i in range(k): #得到第i近的点的label,sortedDistIndicies[i]表示该点在DataSet中的序号 voteIlabel = labels[sortedDistIndicies[i]] #在classCount中给key为voteIlabel的value +1 classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1 #将投票计距离最近的前k个点的label数的字典进行排序,返回值sortedClassCount #类型为list[(label1,label1Count),(label2,label2Count)]每个括号内为tuple sortedClassCount = sorted(classCount.iteritems(), key = operator.itemgetter(1), reverse = True) #返回sortedClassCount中第一个位置的tuple中的第一个位置的值,即得票最多的label return sortedClassCount[0][0]
执行:
>>>knn.classify0([1,1], group, labels, 3)>>>'A'
0 0
- 机器学习实战—笔记-kNN算法
- 《机器学习实战》学习笔记——kNN算法
- 《机器学习实战》学习笔记——kNN
- 机器学习实战学习笔记1——KNN算法
- 机器学习实战笔记:KNN
- 机器学习实战笔记--kNN
- 机器学习实战-kNN笔记
- 机器学习实战笔记——KNN算法
- 机器学习实战——kNN算法
- 机器学习实战——KNN代码
- 机器学习实战——kNN算法
- 机器学习实战—实施kNN算法
- 机器学习实战学习笔记-KNN算法
- 《机器学习实战》学习笔记---KNN
- 《机器学习实战》--KNN
- 【机器学习实战】KNN
- 机器学习实战--KNN
- 机器学习实战-kNN
- go语言scan空值报错
- Unity3D 游戏贴图(法线贴图,漫反射贴图,高光贴图)
- easyui扩展 - 最大长度限制
- nf_conntrack: table full, dropping packet 连接跟踪表已满,开始丢包 的解决办法
- c#实现大数相加(字符串) string AddBig(string a, string b)
- 《机器学习实战》学习笔记——kNN
- 总结Android HAL层的使用方法
- android自定义加载动画
- 拖放元素
- easyui扩展 - 鼠标放上后浮动提示
- 50个c/c++源代码网站
- hdoj1241Oil Deposits bfs|dfs
- handler处理不当
- Getting Docker to run on Power8