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 相关文章推荐
基于使用paramiko执行远程linux主机命令(详解)
Oct 16 Python
wxPython的安装图文教程(Windows)
Dec 28 Python
python实现泊松图像融合
Jul 26 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
Dec 05 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
Apr 27 Python
Python Opencv实现图像轮廓识别功能
Mar 23 Python
Python基础学习之时间转换函数用法详解
Jun 18 Python
pyQT5 实现窗体之间传值的示例
Jun 20 Python
详解程序意外中断自动重启shell脚本(以Python为例)
Jul 26 Python
关于python 的legend图例,参数使用说明
Apr 17 Python
python3通过udp实现组播数据的发送和接收操作
May 05 Python
Python字符串split及rsplit方法原理详解
Jun 29 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/12/06 PHP
Mysql和网页显示乱码解决方法集锦
2008/03/27 PHP
微盾PHP脚本加密专家php解密算法
2020/09/13 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
php socket通信简单实现
2016/11/18 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
2013/08/13 Javascript
javascript版2048小游戏
2015/03/18 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
AngularJS服务service用法总结
2016/12/13 Javascript
jstree单选功能的实现方法
2017/06/07 Javascript
微信小程序开发之toast等弹框提示使用教程
2017/06/08 Javascript
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
基于jQuery的左滑出现删除按钮的示例
2017/08/29 jQuery
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
django自带serializers序列化返回指定字段的方法
2019/08/21 Python
pycharm部署、配置anaconda环境的教程
2020/03/24 Python
TensorFlow使用Graph的基本操作的实现
2020/04/22 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
德国领先的大尺码和超大尺码男装在线零售商:Bigtex
2019/06/22 全球购物
Net Remoting把服务器端激活两种模式
2014/01/22 面试题
市场营销专业个人自荐信格式
2013/09/21 职场文书
幼儿评语大全
2014/04/30 职场文书
环境日宣传活动总结
2014/07/09 职场文书
六五普法心得体会2016
2016/01/21 职场文书
领导干部学习心得体会
2016/01/23 职场文书