机器学习笔记之K近邻算法

  今天学习的是机器学习中最为简单的一个算法:K近邻算法,简称KNN。由于学习主要参照《机器学习实战》这本书进行,本系列文章中涉及到的概念与实例绝大部分来源于此。本文主要从KNN算法概述,使用K-近邻算法改进约会网网站的配对效果,手写识别函数三个方面来展开,本文的主要用意在于阐释《机器学习实战》中源代码的涉及到的函数,以及通过实践将本书中涉及到的只能在python2中运行的源代码转为在python3下能够成功运行的代码。

  关键词:  数据可视化   数据归一化   python3     

环境:  Anaconda

     Python3.6

一、KNN算法概述

1.1 工作原理

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

1.2 python导入数据

  为了简单演示K近邻算法的实现过程,在这一部分导入了一个最简单的数据样本集。新建一个py文件命名为kNN.py(注意k为小写),在该文件下写入下述代码,保存该文件至python的工作路径。

1 from numpy import *
2 import operator
3 def createDataSet():
4     group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
5     labels = ['A','A','B','B']
6     return group, labels

  array函数只有在import numpy 的条件下才能使用,需要注意其与默认数据类型list的区别。至此,我们已经完成了createDateSet()函数的编写,在python开发环境中,我们只需要输入下述命令行即可完成数据的导入。

1 >>>import kNN
2 >>>group,labels = kNN.createDataSet()

 1.3 kNN分类器的实现

  完成了数据导入工作后,接下来需要考虑的就是如何用代码实现分类器了。首先给出分类器实现的一般步骤:

  • 计算已知类别数据集中的点与当前点的距离;
  • 按照距离递增次序排序;
  • 选取与当前点距离最小的k个点;
  • 确定前k个点所在类别的出现频率;
  • 返回前k个点出现概率最高的类别作为当前点的预测分类。
原文地址:https://www.cnblogs.com/jinjin-2018/p/8563744.html