2-1KNN算法
来源:互联网 发布:淘宝怎么享受极速退款 编辑:程序博客网 时间:2024/06/06 09:51
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,labelsdef classify0(inX,dataSet,labels,k):#输入量,训练样本集,标签向量,取前K个 dataSetSize = dataSet.shape[0]#返回dataSet的维数,0表示有几行,1表示有几列 #print(dataSetSize) diffMat = tile(inX,(dataSetSize,1))-dataSet#把inx的行数拓展,列数不变 # print(tile(inX,(dataSetSize,1))) sqDiffMat = diffMat ** 2 sqDistances = sqDiffMat.sum(axis = 1) distances = sqDistances ** 0.5 sortedDistIndicies = distances.argsort() #将distances从小到大排列,提取他们的index classCount = {}#定义一个新的字典,存储对应标签向量的数量 for i in range(k): voteIlabel = labels[sortedDistIndicies[i]] # print("第%d个的类型是%s" %(i,voteIlabel)) classCount[voteIlabel] = classCount.get(voteIlabel,0)+1#dict.get(key,0)==dict[], #返回特定键key的键值 #找出最大的那个 #print(classCount.items()),结果为dict_items([('B', 2), ('A', 1)])dict.items() # 功能:以列表返回可遍历的(键,值)元组数组 sortedClassCount = sorted(classCount.items(),key=operator.itemgetter(1),reverse=True) '''sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。 list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list, 而不是在原来的基础上进行的操作。 ''' return sortedClassCount[0][0]def main(): group,labels=createDataSet() print(group) print(labels) print(classify0([0,1],group,labels,3))main()参考:http://blog.csdn.net/rujin_shi/article/details/78766033
.shape用于计算array各维度的长度,在python中都是从0开始的。0表示有几行,1表示有几列tile函数是numpy包中的,用于重复array,比如上面代码中的tile(inX,(dataSetSize,1)),表示重复inX,其行重复dataSetSize次,而列不重复.sum是numpy中用于计算一个array内部行列求和,axis=1表示按列求和,即把每一行的元素加起来.argsort是numpy中对array进行排序的函数,排序是升序,提取他们的index下标classCount = {} 其中{}表示生成的是字典,在字典这个类中,有方法get,对classCount元素赋值,其实是个计数器get(key,0)返回键key的键值,若键不存在,则返回0,以达到从0计数的效果sorted是内置函数,可以help(sorted)查看用法>>> dic={1:'a',2:'c',3:'b'}>>> import operator>>> sorted(dic,key=operator.itemgetter(1),reverse=True)>>> sorted(dic.items(),key=operator.itemgetter(1),reverse=True)[(2, 'c'), (3, 'b'), (1, 'a')]>>> sorted(dic.items(),key=operator.itemgetter(0),reverse=True)[(3, 'b'), (2, 'c'), (1, 'a')]
operator模块下的itemgetter函数,顾名思义就是提取第X个元素的意思
阅读全文
0 0
- 2-1KNN算法
- 算法学习2:KNN 算法
- 2、K近邻算法(KNN)
- 机器学习算法(1) KNN
- KNN算法
- KNN算法
- KNN算法
- KNN算法
- kNN算法
- KNN算法
- KNN算法
- KNN算法
- KNN算法
- knn算法
- kNN算法
- knn算法
- KNN算法
- KNN算法
- java利用sigar获取电脑cpu 内存 硬盘使用率等信息
- web项目部署到CentOs 7上运行
- 洛谷二分答案
- Spring Cloud 中文网
- Redis命令
- 2-1KNN算法
- [代码积累]C#中泛型缓存的简单实现
- linux挂载详解
- PyQt5笔记(06) -- 菜单
- linux lua编译
- Pyhon基础:Monkey Patch(猴子补丁)
- 事务及事务的特性
- BFS&Python
- KMP算法实现