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远程登录代码
Apr 29 Python
wxPython事件驱动实例详解
Sep 28 Python
深入理解Javascript中的this关键字
Mar 27 Python
python距离测量的方法
Mar 06 Python
Python爬虫小技巧之伪造随机的User-Agent
Sep 13 Python
详解Python 解压缩文件
Apr 09 Python
python Tkinter的图片刷新实例
Jun 14 Python
Python flask框架post接口调用示例
Jul 03 Python
获取Pytorch中间某一层权重或者特征的例子
Aug 17 Python
python爬虫-模拟微博登录功能
Sep 12 Python
浅谈优化Django ORM中的性能问题
Jul 09 Python
Python实现照片卡通化
Dec 06 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与MySQL交互使用详解
2006/10/09 PHP
PHP+MYSQL的文章管理系统(二)
2006/10/09 PHP
探讨php define()函数及defined()函数使用详解
2013/06/09 PHP
Yii2.0中的COOKIE和SESSION用法
2016/08/12 PHP
PHP获取当前执行php文件名的代码
2017/03/02 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
firefox中用javascript实现鼠标位置的定位
2007/06/17 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
js调用css属性写法
2013/09/21 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
js判断鼠标左、中、右键哪个被点击的方法
2015/01/27 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
ES6关于Promise的用法详解
2018/05/07 Javascript
vue中使用input[type="file"]实现文件上传功能
2018/09/10 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
vue实现百度搜索功能
2020/12/28 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
javascript History对象原理解析
2020/02/17 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
python脚本监控Tomcat服务器的方法
2018/07/06 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
python从子线程中获得返回值的方法
2019/01/30 Python
Python3安装psycopy2以及遇到问题解决方法
2019/07/03 Python
Django框架视图函数设计示例
2019/07/29 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
如何提高MySql的安全性
2014/06/19 面试题
策划创业计划书
2014/02/06 职场文书
服装设计专业求职信
2014/06/16 职场文书
就业协议书范本
2014/10/08 职场文书
小学班主任工作总结2015
2015/04/07 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
只用50行Python代码爬取网络美女高清图片
2021/06/02 Python