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 Django模板的使用方法(图文)
Nov 04 Python
Python中使用装饰器时需要注意的一些问题
May 11 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
Feb 17 Python
让python 3支持mysqldb的解决方法
Feb 14 Python
Python自动生产表情包
Mar 17 Python
Django实现组合搜索的方法示例
Jan 23 Python
python实现简单银行管理系统
Oct 25 Python
python 使用递归实现打印一个数字的每一位示例
Feb 27 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
May 17 Python
keras-siamese用自己的数据集实现详解
Jun 10 Python
Python 中Operator模块的使用
Jan 30 Python
python编程简单几行代码实现视频转换Gif示例
Oct 05 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/11/19 PHP
PHP STRING 陷阱原理说明
2010/07/24 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
javascript 表单的友好用户体现
2009/01/07 Javascript
JavaScript入门教程(12) js对象化编程
2009/01/31 Javascript
从JavaScript 到 JQuery (1)学习小结
2009/02/12 Javascript
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
2017/11/02 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
详解Vue CLI3 多页应用实践和源码设计
2018/08/30 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
[55:18]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python+MongoDB自增键值的简单实现
2016/11/04 Python
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
python django 原生sql 获取数据的例子
2019/08/14 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
2019/08/30 Python
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
毕业生护理专业个人求职信范文
2014/01/04 职场文书
残疾人小组计划书
2014/04/27 职场文书
2014年保育员工作总结
2014/12/02 职场文书
监护人证明
2015/06/19 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
用Python selenium实现淘宝抢单机器人
2021/06/18 Python
Win11 25163.1010更新补丁KB5016904推送,测试服务验证管道(附更新修复汇总)
2022/07/23 数码科技