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实现的检测网站挂马程序
Nov 30 Python
Python编程判断这天是这一年第几天的方法示例
Apr 18 Python
python实现随机森林random forest的原理及方法
Dec 21 Python
win8下python3.4安装和环境配置图文教程
Jul 31 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
python写程序统计词频的方法
Jul 29 Python
python解释器spython使用及原理解析
Aug 24 Python
PyCharm更改字体和界面样式的方法步骤
Sep 27 Python
python如何实现复制目录到指定目录
Feb 13 Python
Python脚本实现Zabbix多行日志监控过程解析
Aug 26 Python
mac安装python3后使用pip和pip3的区别说明
Sep 01 Python
Python字节单位转换(将字节转换为K M G T)
Mar 02 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新手上路(十四)
2006/10/09 PHP
php设计模式 Bridge (桥接模式)
2011/06/26 PHP
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
学习php分页代码实例
2013/10/24 PHP
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
js仿网易表单及时验证功能
2017/03/07 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
2017/06/12 Javascript
Angular如何引入第三方库的方法详解
2017/07/13 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
2018/10/22 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
[01:23:24]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第三场 2月7日
2021/03/11 DOTA
在Django的URLconf中使用多个视图前缀的方法
2015/07/18 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
Python:slice与indices的用法
2019/11/25 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
HTML5拖拽文件到浏览器并实现文件上传下载功能代码
2013/06/06 HTML / CSS
聚美优品陈欧广告词
2014/03/14 职场文书
升职感谢信
2015/01/22 职场文书
自主招生专家推荐信
2015/03/26 职场文书
贫民窟的百万富翁观后感
2015/06/09 职场文书
2016年中秋节晚会领导致辞
2015/11/26 职场文书
高中体育课教学反思
2016/02/16 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
python爬虫--selenium模块
2021/03/31 Python
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers
box-shadow单边阴影的实现
2023/05/21 HTML / CSS