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批量生成本地ip地址的方法
Mar 23 Python
在Python3中使用asyncio库进行快速数据抓取的教程
Apr 02 Python
详解Python中的序列化与反序列化的使用
Jun 30 Python
Python和Perl绘制中国北京跑步地图的方法
Mar 03 Python
用virtualenv建立多个Python独立虚拟开发环境
Jul 06 Python
基于Python Numpy的数组array和矩阵matrix详解
Apr 04 Python
解决Python3 被PHP程序调用执行返回乱码的问题
Feb 16 Python
python中如何使用insert函数
Jan 09 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
Feb 26 Python
Python读写操作csv和excle文件代码实例
Mar 16 Python
python读取配置文件方式(ini、yaml、xml)
Apr 09 Python
Python作用域和名称空间的详细介绍
Apr 13 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缓存类代码(附详细说明)
2011/06/09 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
2017/10/26 PHP
Javascript miscellanea -display data real time, using window.status
2007/01/09 Javascript
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
基于jquery的获取mouse坐标插件的实现代码
2010/04/01 Javascript
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
js获取数组的最后一个元素
2015/04/14 Javascript
详解JavaScript操作HTML DOM的基本方式
2015/10/21 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
JS正则获取HTML元素的方法
2017/03/31 Javascript
AngularJS日程表案例详解
2017/08/15 Javascript
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
Python语言描述机器学习之Logistic回归算法
2017/12/21 Python
python实现百度语音识别api
2018/04/10 Python
对Python 语音识别框架详解
2018/12/24 Python
python字典的常用方法总结
2019/07/31 Python
Python谱减法语音降噪实例
2019/12/18 Python
Spartoo芬兰:欧洲最大的网上鞋店
2016/08/28 全球购物
公司员工的自我评价范例
2013/11/01 职场文书
社区母亲节活动方案
2014/03/05 职场文书
创意婚礼策划方案
2014/05/18 职场文书
法律专业求职信
2014/05/24 职场文书
文秘自荐信
2014/06/28 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
"9.18"国耻日演讲稿范文
2014/09/14 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
新郎婚礼致辞
2015/07/27 职场文书
2016新教师岗前培训心得体会
2016/01/08 职场文书