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 cookielib 登录人人网的实现代码
Dec 19 Python
Python字符串切片操作知识详解
Mar 28 Python
python中实现k-means聚类算法详解
Nov 11 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
Apr 16 Python
selenium获取当前页面的url、源码、title的方法
Jun 12 Python
python中bs4.BeautifulSoup的基本用法
Jul 27 Python
Python八皇后问题解答过程详解
Jul 29 Python
基于Python获取docx/doc文件内容代码解析
Feb 17 Python
Python flask框架端口失效解决方案
Jun 04 Python
详解python模块pychartdir安装及导入问题
Oct 22 Python
Django model class Meta原理解析
Nov 14 Python
python中如何对多变量连续赋值
Jun 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
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
Symfony2学习笔记之插件格式分析
2016/03/17 PHP
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
javascript 四则运算精度修正函数代码
2010/05/31 Javascript
修复ie8&chrome下window的resize事件多次执行
2011/10/20 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
JS实现图片无间断滚动代码汇总
2014/07/30 Javascript
浅谈nodeName,nodeValue,nodeType,typeof 的区别
2015/01/13 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
微信小程序 按钮滑动的实现方法
2017/09/27 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
新手如何快速理解js异步编程
2019/06/24 Javascript
七行JSON代码把你的网站变成移动应用过程详解
2019/07/09 Javascript
python使用邻接矩阵构造图代码示例
2017/11/10 Python
python表格存取的方法
2018/03/07 Python
python sys.argv[]用法实例详解
2018/05/25 Python
Python3的介绍、安装和命令行的认识(推荐)
2018/10/20 Python
pyqt实现.ui文件批量转换为对应.py文件脚本
2019/06/19 Python
对python中url参数编码与解码的实例详解
2019/07/25 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
CSS3实现的渐变幻灯片效果
2020/12/07 HTML / CSS
东方红海科技面试题软件测试方面
2012/02/08 面试题
高中生自我评价个人范文
2013/11/09 职场文书
企业文化标语口号
2014/06/09 职场文书
关于感恩的演讲稿800字
2014/08/26 职场文书
关于颐和园的导游词
2015/01/30 职场文书
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android