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 相关文章推荐
利用一个简单的例子窥探CPython内核的运行机制
Mar 30 Python
python中Genarator函数用法分析
Apr 08 Python
在Python的Django框架的视图中使用Session的方法
Jul 23 Python
简单谈谈python中的lambda表达式
Jan 19 Python
Python安装图文教程 Pycharm安装教程
Mar 27 Python
详解Django之auth模块(用户认证)
Apr 17 Python
matplotlib调整子图间距,调整整体空白的方法
Aug 03 Python
python实现AES和RSA加解密的方法
Mar 28 Python
解决Django一个表单对应多个按钮的问题
Jul 18 Python
python 使用elasticsearch 实现翻页的三种方式
Jul 31 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
Aug 19 Python
Python调用JavaScript代码的方法
Oct 27 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面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
兼容PHP和Java的des加密解密代码分享
2014/06/26 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
js中的this关键字详解
2013/09/25 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
JS判断文本框内容改变事件的简单实例
2014/03/07 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
AngularJS变量及过滤器Filter用法分析
2016/11/22 Javascript
Angularjs实现上传图片预览功能
2017/09/01 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
vue引入微信sdk 实现分享朋友圈获取地理位置功能
2019/07/04 Javascript
JavaScript 如何计算文本的行数的实现
2020/09/14 Javascript
创建与框架无关的JavaScript插件
2020/12/01 Javascript
[01:02:54]完美世界DOTA2联赛PWL S2 FTD vs GXR 第一场 11.22
2020/11/26 DOTA
详解Django中的过滤器
2015/07/16 Python
Django验证码的生成与使用示例
2017/05/20 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
python实现桌面托盘气泡提示
2019/07/29 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
Html5页面上如何禁止手机虚拟键盘弹出
2020/03/19 HTML / CSS
荷兰电脑专场:Paradigit
2018/05/05 全球购物
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
高校毕业生自我鉴定
2013/10/27 职场文书
大学团支书的自我评价分享
2013/12/14 职场文书
综合办公室主任职责
2013/12/16 职场文书
优秀的计算机专业求职信范文
2013/12/27 职场文书
合作协议书
2014/04/23 职场文书
安全标语口号
2014/06/09 职场文书
观后感开头
2015/06/19 职场文书
2016七夕情人节感言
2015/12/09 职场文书