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 相关文章推荐
20招让你的Python飞起来!
Sep 27 Python
Flask 让jsonify返回的json串支持中文显示的方法
Mar 26 Python
Python爬虫常用小技巧之设置代理IP
Sep 13 Python
Python如何获得百度统计API的数据并发送邮件示例代码
Jan 27 Python
python字典的setdefault的巧妙用法
Aug 07 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
Aug 07 Python
python3 selenium自动化 下拉框定位的例子
Aug 23 Python
python中Lambda表达式详解
Nov 20 Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
详解Django中views数据查询使用locals()函数进行优化
Aug 24 Python
python如何设置静态变量
Sep 07 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
PHP setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
PHP代码优化之成员变量获取速度对比
2014/02/28 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
接收键盘指令的脚本
2006/06/26 Javascript
List Information About the Binary Files Used by an Application
2007/06/11 Javascript
基于jQuery的固定表格头部的代码(IE6,7,8测试通过)
2010/05/18 Javascript
怎样在JavaScript里写一个swing把数据插入数据库
2012/12/10 Javascript
使用Math.floor与Math.random取随机整数的方法详解
2013/05/07 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
JavaScript实现的双向跨域插件分享
2015/01/31 Javascript
JS实现向表格行添加新单元格的方法
2015/03/30 Javascript
详细分析JavaScript函数定义
2015/07/16 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
JavaScript代码调试方法实例小结
2019/01/05 Javascript
puppeteer实现html截图的示例代码
2019/01/10 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
Python常用小技巧总结
2015/06/01 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
python3实现高效的端口扫描
2019/08/31 Python
python绘制汉诺塔
2021/03/01 Python
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
uniapp+Html5端实现PC端适配
2020/07/15 HTML / CSS
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
保安的辞职报告怎么写
2014/01/20 职场文书
教师专业自荐书范文
2014/02/10 职场文书
公司采购主管岗位职责
2014/06/17 职场文书
2014镇副书记群众路线专题民主生活会思想汇报
2014/09/23 职场文书
党的群众路线教育实践活动方案
2014/10/31 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
个人合作协议范本
2015/08/06 职场文书
Pygame Draw绘图函数的具体使用
2021/11/17 Python
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android