K-近邻算法的python实现代码分享


Posted in Python onDecember 09, 2017

k-近邻算法概述:

所谓k-近邻算法KNN就是K-Nearest neighbors Algorithms的简称,它采用测量不同特征值之间的距离方法进行分类

用官方的话来说,所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居), 这K个实例的多数属于某个类,就把该输入实例分类到这个类中。

k-近邻算法分析

优点:精度高、对异常值不敏感、无数据输入假定。

缺点:计算复杂度高、空间复杂度高。

适用数据范围:数值型和标称型

k-近邻算法工作原理:

它的工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的的分类,作为新数据的分类。

​k-近邻算法实现过程:

对未知类别​属性的数据集中的每个点依次执行以下操作:

​(1)计算已知类别数据集中的点与当前点之间的距离;

(2)按照距离递增次序排序;

(3)选取与当前点距离最小的k个点;

(4)确定前k个点所在类别的出现频率;

(5)返回前k个点出现频率最高的类别作为当前点的预测分类。

​k-近邻算法python代码实现:

编辑kNN.py文件代码如下:

K-近邻算法的python实现代码分享

编辑完成后保存,linux下确保当前路径为存储kNN.py文件的位置,进入python开发环境开始测试:

K-近邻算法的python实现代码分享

上图给出了点[0,0]、[1,0.9]的测试输出分类结果分别为B、A。至此,我们已经构造完成了一个分类器,使用这个分类器可以完成很多分类任务。从这个实例出发,构造使用分类算法将会更加容易。

分类器测试评估:

为了测试分类器的效果,需要对分类器做出评估,我们可以通过大量的测试数据得到分类器的错误率——分类器给出错误结果的次数除以测试执行的总数。错误率是常用的评估方法,主要用于评估分类器在某个数据集上的执行效果。完美分类器的错误率为0,最差分类器的错误率是1.0,在这种情况下,分类器根本就无法找到一个正确答案。

结束语:

本文首先对kNN做了简单介绍,通过了解其工作原理和实现流程,并使用k-近邻算法构造了分类器。我们也可以检验分类器给出的答案是否符合我们的预期。此外,还可以对分类器做大量的测试,并以错误率来评估该分类器的分类效果。

以上就是本文关于K-近邻算法的python实现代码分享的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
布同自制Python函数帮助查询小工具
Mar 13 Python
用python删除java文件头上版权信息的方法
Jul 31 Python
Python正则表达式非贪婪、多行匹配功能示例
Aug 08 Python
详解Numpy中的广播原则/机制
Sep 20 Python
Python中实例化class的执行顺序示例详解
Oct 14 Python
Python过滤txt文件内重复内容的方法
Oct 21 Python
pytorch中的自定义反向传播,求导实例
Jan 06 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
Jan 21 Python
在python image 中实现安装中文字体
May 16 Python
python为什么会环境变量设置不成功
Jun 23 Python
如何在Python3中使用telnetlib模块连接网络设备
Sep 21 Python
pycharm debug 断点调试心得分享
Apr 16 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 #Python
python学习之matplotlib绘制散点图实例
Dec 09 #Python
Python学习pygal绘制线图代码分享
Dec 09 #Python
Python编程pygal绘图实例之XY线
Dec 09 #Python
同时安装Python2 & Python3 cmd下版本自由选择的方法
Dec 09 #Python
基于Python中capitalize()与title()的区别详解
Dec 09 #Python
Python IDLE入门简介
Dec 08 #Python
You might like
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
php之可变函数的实例详解
2017/09/13 PHP
php测试kafka项目示例
2020/02/06 PHP
JQuery jsonp 使用示例代码
2009/08/12 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
Javascript实现单例模式
2016/01/24 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
nodejs图片处理工具gm用法小结
2018/12/12 NodeJs
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
vue 实现v-for循环回来的数据动态绑定id
2019/11/07 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
python基础教程之Hello World!
2014/08/29 Python
Python简单进程锁代码实例
2015/04/27 Python
详解Python中for循环的使用方法
2015/05/14 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
Flask项目中实现短信验证码和邮箱验证码功能
2019/12/05 Python
Giglio美国站:意大利奢侈品购物网
2018/02/10 全球购物
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
违反学校规定检讨书
2014/01/18 职场文书
企业安全生产责任书
2014/04/14 职场文书
爱情保证书大全
2014/04/29 职场文书
2014年医院十一国庆节活动方案
2014/09/15 职场文书
党员个人党性分析材料
2014/12/18 职场文书
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python
豆瓣2021评分最高动画剧集-豆瓣评分最高的动画剧集2021
2022/03/18 日漫
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers