机器学习之K-近邻算法代码实现
来源:互联网 发布:npm 安装淘宝镜像 编辑:程序博客网 时间:2024/05/19 03:24
以下是代码实现
#coding:utf-8'''Created on 2017-03-17@author: qiujiahao'''import numpy as npimport operatorfrom audioop import reversedef createDataSet(): #以矩阵的格式创造四个数据 group = np.array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) #为这四个点进行分类 labels = ["A","A","B","B"] return group,labelsdef classify0(index,dataset,labes,k): #index代表你想分类的值,dataset代表数据集,labels代表分类 #取出dataset有多少行 DatasetSize=dataset.shape[0] #tile是将当前数据复制DatasetSize行,1列的矩阵 diffMax=np.tile(index, (DatasetSize,1)) - dataset #对每个值乘以2的幂 sqdiffMax=diffMax**2 #将每行的数据进行加法运算,这样就算出了与每一个点的距离 sqDistance=sqdiffMax.sum(axis=1) #再开根号 distance = sqDistance**0.5 #对这组距离值的索引进行排序,最小值的索引放在最前面 sortedDis= distance.argsort() classCount = {} for i in range(k): #注意,此处是最难理解的 #当i为0的时候,取出的是距离最近的值的索引值, #而由于createDataSet()函数里group和labels的索引是一一对应的 #也就是说,当你取出距离最近的值的索引值时,你去labes里正好可以取到这个值 #原来对应的类别,因为他们的索引值都是一一对应的 votelabel = labes[sortedDis[i]] #字典里如果没有这个值则返回0,如果有则返回原来的值 classCount[votelabel] = classCount.get(votelabel,0)+1 #sorted的第一参数是可迭代的类型,用元素的莫一个属性作为比较的对象,reverse排序规则,True代表从小到大 #classCount.iteritems()代表返回字典的键值对, #operator.itemgetter(1),获取对象的第1个域的值 #返回结果为[('B',2),('B',1)] sortedclass = sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True) return sortedclass[0][0]if __name__ == '__main__': group,labels = createDataSet() test = classify0([0.2,0.2],group,labels,3) print test
B
0 0
- 机器学习之K-近邻算法代码实现
- 机器学习:K-近邻算法原理与Python代码实现
- 机器学习之K-近邻算法代码分析
- 机器学习实战之 k近邻算法 原理及代码实现
- 机器学习笔记之K近邻算法
- 机器学习之K-近邻算法
- 机器学习实战之K-近邻算法
- python机器学习之K近邻算法
- 《机器学习实战》之K-近邻算法
- 机器学习之k-近邻算法
- python机器学习之 K-近邻算法
- 机器学习之k近邻算法
- 机器学习实战之k-近邻算法
- 机器学习之K-近邻算法
- 机器学习之K近邻算法
- 机器学习笔记之K-近邻算法
- 机器学习实战之K近邻算法
- 机器学习之K-近邻算法
- maven 配置文件详解
- GCC C语言处理主要函数之c_common_init_ts
- FFmpeg实时采集麦克风延迟
- 【3月17日】Java 监听器
- 网站服务器架设
- 机器学习之K-近邻算法代码实现
- Linux入门
- 使用广播接受者BroadcastReceiver监测网络变化
- GOLDENGATE同步单表配置方案
- url-pattern配置为"/"和"/*"的区别
- HTTP 常见面试题总结
- MySQL存储过程详解
- 在Idea中使用Git
- Http变成Https