机器学习之分类算法:K最近邻python实现

目录

1、序2、算法思路3、KNN算法过程4、KNN算法优劣势4.1 优点4.2 缺点5、算法要点5.1 计算步骤5.2 类别的判定6、python实现代码

1、序

在学习KNN算法之前,大家思考一下人是如何学习,如何区分各类事物。显然,学习的第一步是识别,最起码知道什么是什么,然后去谈你对这个有什么认识呀,有什么感想呀。OK,但是我们如何让计算机对实现事物进行识别呢?其实也不复杂,第一步,让各类测量设备,如红外距离传感器、温度传感器去测量现实事物各类数据;第二步,提炼各类数据模式特征,形成样本库;第三步,对于新的事物进行测量,并将新的事物与样本库数据特征相似的事物归为一类。所以,识别就是作分类,可见分类算法的重要性了吧。今天就讲讲分类算法里比较常见的KNN算法,虽然很简单,但在解决特定问题时却能发挥很好的效果。

2、算法思路

如果样本A在样本库里与k个最相似(即样本库里最邻近)的样本中的大多数属于某一类,则认为样本也属于该类别。所以,KNN算法就是用距离来衡量样本之间的相似度。

3、KNN算法过程

KNN算法示意图

上图数据都打好了标签,一类是蓝色的正方形,一类是红色的三角形,绿色的圆形是我们待分类的数据。

如果K=3,那么离绿色点最近的有2个红色三角形和1个蓝色的正方形,这3个点投票,于是绿色的这个待分类点属于红色的三角形。

如果K=5,那么离绿色点最近的有2个红色三角形和3个蓝色的正方形,这5个点投票,于是绿色的这个待分类点属于蓝色的正方形。

这里会有朋友有一个疑问,这太不靠谱了,k取不同的值,结果不一样、不稳定。我告诉这位朋友不要急,k取什么无所谓,最终我们还是要经过准确率的考验,找出合适的。这里,仅仅告诉大家KNN算法一般过程。

看到了吧,KNN算法本身是不是很简单,思想很朴素,没什么花里胡哨的,最难的是:

1、如何将业务抽象成特征向量;

2、如何选取适合模型的数据样本。

这两个事都不是简单的事。算法反而是比较轻松。

4、KNN算法优劣势

4.1 优点

思想简单容易理解与实现

4.2 缺点

样本库要求比较大,计算量超极大

5、算法要点

5.1 计算步骤

1、测距离 测量样本点与样本库里的每个样本的距离,距离度量方法如欧氏距离、曼哈顿距离及夹角余弦相似我就不介绍了,不知道的朋友问问度娘,只是推荐大家用夹角余弦来做;

2、找近邻 依据步骤1找出最邻近的k个样本;

3、分类 k个近邻中样本最多的类,作为测量样本的类。

5.2 类别的判定

简单投票法:少数服从多数,近邻中哪个类别的点最多就分为该类。

加权投票法:根据距离的远近,对近邻的投票进行加权,距离越近则权重越大(权重为距离平方的倒数)

6、python实现代码

欢迎大家多多和我交流,共同进步。如果认为有用,点一波关注,谢谢~~~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180620G1Z19J00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券