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列表操作使用示例分享
Feb 21 Python
浅析Python的web.py框架中url的设定方法
Jul 11 Python
Python将图片批量从png格式转换至WebP格式
Aug 22 Python
Python常见工厂函数用法示例
Mar 21 Python
Python Json模块中dumps、loads、dump、load函数介绍
May 15 Python
python实现批量视频分帧、保存视频帧
May 31 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
Jul 12 Python
浅谈tensorflow 中tf.concat()的使用
Feb 07 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
Jun 01 Python
用python写一个带有gui界面的密码生成器
Nov 06 Python
如何用python插入独创性声明
Mar 31 Python
pyqt5蒙版遮罩mask,setmask的使用
Jun 11 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 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
PHP基于新浪IP库获取IP详细地址的方法
2017/05/04 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
Web开发者必备的12款超赞jQuery插件
2010/12/03 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
判断文档离浏览器顶部的距离的方法
2014/01/08 Javascript
使用jQuery+EasyUI实现CheckBoxTree的级联选中特效
2015/12/06 Javascript
JS之获取样式的简单实现方法(推荐)
2016/09/13 Javascript
ES6概念 ymbol.for()方法
2016/12/25 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
angularjs下拉框空白的解决办法
2017/06/20 Javascript
微信小程序支付功能 php后台对接完整代码分享
2018/06/12 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
Node4-5静态资源服务器实战以及优化压缩文件实例内容
2019/08/29 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
微信小程序开发(三):返回上一级页面并刷新操作示例【页面栈】
2020/06/01 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
python微元法计算函数曲线长度的方法
2018/11/08 Python
Python Django 实现简单注册功能过程详解
2019/07/29 Python
Python Collatz序列实现过程解析
2019/10/12 Python
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
使用css3 属性如何丰富图片样式(圆角 阴影 渐变)
2012/11/22 HTML / CSS
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
求职信格式范本
2013/11/15 职场文书
《音乐之都维也纳》教学反思
2014/04/16 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
谢师宴答谢词
2015/01/05 职场文书
无婚姻登记记录证明
2015/06/18 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
python 如何在list中找Topk的数值和索引
2021/05/20 Python
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python
详解SQL报错盲注
2022/07/23 SQL Server