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的正则表达式re模块的常用方法
Mar 09 Python
python下载文件时显示下载进度的方法
Apr 02 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
Nov 11 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
Jul 12 Python
Python生成器以及应用实例解析
Feb 08 Python
Django添加favicon.ico图标的示例代码
Aug 07 Python
Python matplotlib生成图片背景透明的示例代码
Aug 30 Python
python分布式编程实现过程解析
Nov 08 Python
Python多线程Threading、子线程与守护线程实例详解
Mar 24 Python
python 如何使用find和find_all爬虫、找文本的实现
Oct 16 Python
python里glob模块知识点总结
Jan 05 Python
Pytorch 中的optimizer使用说明
Mar 03 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中for循环与foreach的区别
2017/03/06 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
javascript类继承机制的原理分析
2009/09/12 Javascript
js检测判断日期大于多少天的方法
2015/05/04 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
JavaScript中子对象访问父对象的方式详解
2016/09/01 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
2016/12/28 Javascript
微信小程序 网络请求(post请求,get请求)
2017/01/17 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
2017/05/03 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
layui获取选中行数据的实例讲解
2018/08/19 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
Python之数据序列化(json、pickle、shelve)详解
2019/08/30 Python
Python 使用多属性来进行排序
2019/09/01 Python
python 实现aes256加密
2020/11/27 Python
python3中for循环踩过的坑记录
2020/12/14 Python
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
关于 HTML5 的七个传说小结
2012/04/12 HTML / CSS
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
大学生毕业的自我鉴定
2013/11/13 职场文书
办公室驾驶员岗位职责
2013/11/15 职场文书
幼儿园安全检查制度
2014/01/30 职场文书
促销活动方案模板
2014/02/24 职场文书
聚美优品的广告词
2014/03/14 职场文书
健康教育评估方案
2014/05/25 职场文书
中学政教处工作总结
2015/08/13 职场文书
opencv读取视频并保存图像的方法
2021/06/04 Python
如何避免mysql启动时错误及sock文件作用分析
2022/01/22 MySQL