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中使用select模块实现非阻塞的IO
Feb 03 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
Jan 20 Python
python实现类之间的方法互相调用
Apr 29 Python
用python实现刷点击率的示例代码
Feb 21 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
Mar 23 Python
python分数表示方式和写法
Jun 26 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 Python
Python图像处理库PIL中图像格式转换的实现
Feb 26 Python
Python pandas 列转行操作详解(类似hive中explode方法)
May 18 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
Aug 04 Python
Django静态文件加载失败解决方案
Aug 26 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中通过语义URL防止网站被攻击的方法分享
2011/09/08 PHP
PHP中数组的三种排序方法分享
2012/05/07 PHP
php中hashtable实现示例分享
2014/02/13 PHP
php通过strpos查找字符串出现位置的方法
2015/03/17 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
javascript 二进制运算技巧解析
2012/11/27 Javascript
js加强的经典分页实例
2013/03/15 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
js中常用的Tab切换效果(推荐)
2016/08/30 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
2016/10/30 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
2016/11/02 Javascript
jQuery制作input提示内容(兼容IE8以上)
2017/07/05 jQuery
React Native中TabBarIOS的简单使用方法示例
2017/10/13 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
vue的过滤器filter实例详解
2018/09/17 Javascript
如何安装控制器JavaScript生成插件详解
2018/10/21 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
2018/11/10 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
[43:03]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python BeautifulSoup中文乱码问题的2种解决方法
2014/04/22 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
电信专业应届生自荐信
2013/09/28 职场文书
安全大检查反思材料
2014/01/31 职场文书
电脑售后服务承诺书
2014/03/27 职场文书
党支部公开承诺践诺书
2014/03/28 职场文书
2014年医院十一国庆节活动方案
2014/09/15 职场文书
公证处委托书
2015/01/28 职场文书
2015应届毕业生自荐信范文
2015/03/05 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
2019公司管理制度
2019/04/19 职场文书
Linux下搭建SFTP服务器的命令详解
2022/06/25 Servers