python k-近邻算法实例分享


Posted in Python onJune 11, 2014

简单说明

这个算法主要工作是测量不同特征值之间的距离,有个这个距离,就可以进行分类了。

简称kNN。

已知:训练集,以及每个训练集的标签。

接下来:和训练集中的数据对比,计算最相似的k个距离。选择相似数据中最多的那个分类。作为新数据的分类。

python实例

# -*- coding: cp936 -*-
#win系统中应用cp936编码,linux中最好还是utf-8比较好。
from numpy import *#引入科学计算包
import operator #经典python函数库。运算符模块。
#创建数据集
def createDataSet():
    group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
    labels=['A','A','B','B']
    return group,labels
#算法核心
#inX:用于分类的输入向量。即将对其进行分类。
#dataSet:训练样本集
#labels:标签向量
def classfy0(inX,dataSet,labels,k):
    #距离计算
    dataSetSize =dataSet.shape[0]#得到数组的行数。即知道有几个训练数据
    diffMat     =tile(inX,(dataSetSize,1))-dataSet#tile:numpy中的函数。tile将原来的一个数组,扩充成了4个一样的数组。diffMat得到了目标与训练数值之间的差值。
    sqDiffMat   =diffMat**2#各个元素分别平方
    sqDistances =sqDiffMat.sum(axis=1)#对应列相乘,即得到了每一个距离的平方
    distances   =sqDistances**0.5#开方,得到距离。
    sortedDistIndicies=distances.argsort()#升序排列
    #选择距离最小的k个点。
    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]

意外收获

把自己写的模块加入到python默认就有的搜索路径:在python/lib/-packages目录下建立一个 xxx.pth的文件,写入自己写的模块所在的路径即可

Python 相关文章推荐
深入理解python对json的操作总结
Jan 05 Python
详解Python之数据序列化(json、pickle、shelve)
Mar 30 Python
利用python求解物理学中的双弹簧质能系统详解
Sep 29 Python
python如何压缩新文件到已有ZIP文件
Mar 14 Python
tensorflow 打印内存中的变量方法
Jul 30 Python
详解python中的线程与线程池
May 10 Python
使用Python实现毫秒级抢单功能
Jun 06 Python
python实现串口自动触发工作的示例
Jul 02 Python
如何使用Python发送HTML格式的邮件
Feb 11 Python
Python基础之字典常见操作经典实例详解
Feb 26 Python
详解python环境安装selenium和手动下载安装selenium的方法
Mar 17 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 Python
浅析python 内置字符串处理函数的使用方法
Jun 11 #Python
python使用正则表达式检测密码强度源码分享
Jun 11 #Python
Python查看多台服务器进程的脚本分享
Jun 11 #Python
Python SQLite3数据库操作类分享
Jun 10 #Python
Python不规范的日期字符串处理类
Jun 10 #Python
Python ORM框架SQLAlchemy学习笔记之数据查询实例
Jun 10 #Python
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
Jun 10 #Python
You might like
20个PHP常用类库小结
2011/09/11 PHP
PHP获取MAC地址的具体实例
2013/12/13 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
tp5框架基于ajax实现异步删除图片的方法示例
2020/02/10 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
JavaScript插入动态样式实现代码
2012/02/22 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
Javascript添加监听与删除监听用法详解
2014/12/19 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
vue 虚拟dom的patch源码分析
2018/03/01 Javascript
Vue2.0结合webuploader实现文件分片上传功能
2018/03/09 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
python实现BackPropagation算法
2017/12/14 Python
python+matplotlib绘制旋转椭圆实例代码
2018/01/12 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
Python判断变量是否是None写法代码实例
2020/10/09 Python
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
PHP经典面试题
2016/09/03 面试题
面试求职的个人自我评价
2013/11/16 职场文书
酒店保安员岗位职责
2014/01/31 职场文书
中介业务员岗位职责
2014/04/09 职场文书
个人查摆问题自查报告
2014/10/16 职场文书
公文写作:工伤事故分析报告怎么写?
2019/11/05 职场文书
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis
在 Python 中利用 Pool 进行多线程
2022/04/24 Python