《机器学习实战》学习笔记(二):k-近邻算法

欢迎关注WX公众号:【程序员管小亮】

【机器学习】《机器学习实战》读书笔记及代码 总目录

  • https://blog.csdn.net/TeFuirnever/article/details/99701256

GitHub代码地址:

  • https://github.com/TeFuirnever/Machine-Learning-in-Action

——————————————————————————————————————————————————————

目录

  • 欢迎关注WX公众号:【程序员管小亮】
    • 本章内容
      • 1、k-近邻算法概述
      • 2、使用k-近邻算法改进约会网站的配对效果
      • 3、Sklearn构建k-近邻分类器用于手写数字识别
      • 4、sklearn.neighbors.KNeighborsClassifier
      • 5、总结
      • 参考文章

本章内容

  • k-近邻分类算法
  • 从文本文件中解析和导入数据
  • 使用Matplotlib创建扩散图
  • 归一化数值

这一节早在【CS231n】斯坦福大学李飞飞视觉识别课程笔记中就讲过了,感兴趣的同学可以去学一学这个课程,同时还有python的相关课程【Python – 100天从新手到大师】,但是没有具体的实现代码,所以今天来搞一下。

1、k-近邻算法概述

简单地说,k-近邻算法采用测量不同特征值之间的距离方法进行分类。

k-近邻算法
优点:精度高、对异常值不敏感、无数据输入假定。
缺点:计算复杂度高、空间复杂度高。
适用数据范围:数值型和标称型。

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

一般来说,只选择样本数据集中前k个最相似的数据,这就是 k-近邻 算法中k的出处,通常k是不大于20的整数。

书上举了一个简单但是经典的例子——电影分类,有人曾经统计过很多电影的打斗镜头和接吻镜头,图2-1显示了6部电影的打斗和接吻镜头数。

《机器学习实战》学习笔记(二):k-近邻算法
首先计算未知电影与样本集中其他电影的距离,如表2-2所示。
《机器学习实战》学习笔记(二):k-近邻算法
这里将数据点左上方定义为类A(也就是爱情片),数据点右下方定义为类B(也就是动作片)。

一共有6组数据,每组数据有两个已知的属性或者特征值。上面的group矩阵每行包含一个不同的数据,我们可以把它想象为某个日志文件中不同的测量点或者入口。由于人类大脑的限制,通常只能可视化处理三维以下的事务。因此为了简单地实现数据可视化,对于每个数据点通常只使用两个特征。向量labels包含了每个数据点的标签信息,labels包含的元素个数等于group矩阵行数。

  1. 实施kNN 算法

对未知类别属性的数据集中的每个点依次执行以下操作:
(1) 计算已知类别数据集中的点与当前点之间的距离;
(2) 按照距离递增次序排序;
(3) 选取与当前点距离最小的k个点;
(4) 确定前k个点所在类别的出现频率;
(5) 返回前k个点出现频率最高的类别作为当前点的预测分类。

根据两点距离公式(欧氏距离公式),计算两个向量点xA和xB之间的距离。

《机器学习实战》学习笔记(二):k-近邻算法
按照步骤,接下来对数据按照从小到大的次序排序。选择距离最小的前k个点,并返回分类结果。

完整代码:

来源:我是管小亮

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年7月17日
下一篇 2019年7月17日

相关推荐