KNN的Python实现(需添加库numpy和operator)
来源:互联网 发布:c语言 矩形 rect 编辑:程序博客网 时间:2024/06/09 19:22
一、KNN算法伪代码:对位置类别属性的数据集中的每个点一次执行如下操作:
(1)计算已知类别数据点与当前点的距离
(2)按照距离递增次序排序
(3)选取与当前距离最小的k个点
(4)确定前K个点所在类别的出现频率
(5)返回前K个点出现频率最高的类别作为当前点的预测分类
二、代码调试:
代码KNN.py:
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): dataSetSize = dataSet.shape[0] diffMat = tile(inX,(dataSetSize,1)) - dataSet sqDiffMat = diffMat**2 sqDistances = sqDiffMat.sum(axis=1) distances = sqDistances**0.5 sortedDistIndicies = distances.argsort() classCount={} for i in range(k): voteIlabel = labels[sortedDistIndicies[i]] classCount[voteIlabel] = classCount.get(voteIlabel,0)+1 sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1),reverse=True) return sortedClassCount[0][0]
函数解析:
from numpy import *
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
dataSetSize=group.shape[0]
shape
shape[0]返回一维长度,shape[1]返回二维长度。
tile
diffMat = tile([0,0],(dataSetSize,1))-group
tile 函数就是把,第一个参数(矩阵[3,5])按照4行,5列重排。
argsort()
从小到大排序,并返回(最小到最大)依次的索引。
{}字典,键值对,第一个参数是键,第二个参数是值
get
a.get(k,c)参数k(键),在a中,返回k键的值:a[b];键k不在a中,返回c
sorted()
sorted 是按照第二个参数进行排序,reverse=True时逆序,false顺序(从小到大)。
参考文献:[美]Peter Harrington著,李锐 李鹏 曲亚东 王斌 译.Machine Learning in Action (机器学习实践),人民邮电出版社,2013年6月第一版,2015年9月北京低11次印刷
0 0
- KNN的Python实现(需添加库numpy和operator)
- 基于python和numpy的KNN手写识别
- 【机器学习算法实现】kNN算法__手写识别——基于Python和NumPy函数库
- 【机器学习算法实现】kNN算法__手写识别——基于Python和NumPy函数库
- 【机器学习算法实现】kNN算法__手写识别——基于Python和NumPy函数库
- 【机器学习算法实现】kNN算法__手写识别——基于Python和NumPy函数库
- KNN的python实现
- numpy KNN简单实现
- KNN的简单实现(python)
- Python中Numpy的tile函数用法以及operator.itemgetter函数和sorted函数
- (1)kNN算法_手写识别实例——基于Python和NumPy函数库
- KNN算法的Python实现
- KNN算法的Python实现
- KNN算法的Python实现
- kNN算法实现,及python库和函数的使用方法回顾
- k最近邻算法(KNN)的简介和python实现
- 安装Python的Numpy和SciPy库
- KNN(K最临近算法)的python实现
- 自己在拖xib中遇到的一些小问题
- Barcode Reader SDK使用教程:网络摄像机读取条码
- LeetCode Integer to Roman
- MP4文件格式详解——元数据moov(一)mvhd box(转)
- URAL 1534 Football in Gondor
- KNN的Python实现(需添加库numpy和operator)
- 网络虚拟化技术(一): Linux网络虚拟化
- Linux命令整理--pwd命令
- <iOS>swift简单控件的创建
- c++存取dat数据
- FileZilla FTP Server在win2008安装及防火墙设置
- leetcode-Power of Two
- c++单例
- Socket 编程(二)