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上基于Markov链生成伪随机文本的教程
Apr 17 Python
Python实现的数据结构与算法之链表详解
Apr 22 Python
详解Python的Django框架中的模版继承
Jul 16 Python
Python实现读取及写入csv文件的方法示例
Jan 12 Python
Python实现的拉格朗日插值法示例
Jan 08 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 Python
numpy矩阵数值太多不能全部显示的解决
May 14 Python
为什么说python适合写爬虫
Jun 11 Python
python和C++共享内存传输图像的示例
Oct 27 Python
python tqdm实现进度条的示例代码
Nov 10 Python
Python高并发和多线程有什么关系
Nov 14 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
Jan 30 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修改Linux或Unix口令的方法分享
2012/01/30 PHP
详解PHP实现支付宝小程序用户授权的工具类
2018/12/25 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
利用try-catch判断变量是已声明未声明还是未赋值
2014/03/12 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
2014/10/17 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
Bootstrap零基础入门教程(三)
2016/07/18 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
js select下拉联动 更具级联性!
2020/04/17 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
2020/08/04 Javascript
纯js+css实现在线时钟
2020/08/18 Javascript
[02:41]DOTA2英雄基础教程 冥魂大帝
2014/01/16 DOTA
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
python实现解数独程序代码
2017/04/12 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
pyqt5中动画的使用详解
2020/04/01 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
2014年教师党员自我评价范文
2014/09/22 职场文书
社区领导班子四风问题原因分析及整改措施
2014/09/28 职场文书
乡镇务虚会发言材料
2014/10/20 职场文书
2014年村委会工作总结
2014/11/24 职场文书
详解Java实践之建造者模式
2021/06/18 Java/Android
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技
Tomcat 与 maven 的安装与使用教程
2022/06/16 Servers