简单易懂教会你KNN算法

来源:互联网 发布:知鱼之乐什么意思 编辑:程序博客网 时间:2024/06/07 16:14

1、什么是KNN算法?

KNN全称是k-Nearest Neighbors,意思是K个最近的邻居。
KNN算法从名字上我们就可以很直观地看出它的原理:从所有的训练样本中找出和未知最近的K个样本,将k个样本中出现最多的类别就是赋给未知样本。
举个例子,大家都知道农场里的鹰的故事,鹰从小就在农场里长大,不知道自己是什么种类,如果在它生活的环境里恰好有鸡也有鹰,那么它会认为自己是鹰还是鸡呢?
放张图:这里写图片描述
假设绿色的圆是农场里的鹰,蓝色正方形是附近的老鹰,红色三角形是农场里的鸡,农场里的鹰会认为自己是鹰还是鸡,取决于它自己心里的“K”,如果K是3,那么它会认为自己是鸡,如果K是5那么它会认为自己是鹰。
可见环境的影响是多么重要,而且我们也应该开阔自己的视野,让自己成为一只老鹰而不是农场里的一只鸡。

2、KNN算法能做什么?

通过上述的例子,我们可以看出KNN算法可以用来进行分类。其实KNN 算法不仅仅可以用来进行分类,还可以用进行匹配,比如说进行匹配等等。

3、如何实现KNN算法?

KNN算法的实现就是取决于,未知样本和训练样本的“距离”。那么如何求出两个样本之间的“距离呢?
我们计算“距离”可以利用欧式距离算法:
这里写图片描述
欧式距离算法可以算出N维向量之间的距离。
那么我们怎么利用欧式距离算法求出两个样本之间的距离?
把两个样本里的n个属性都用数字描述,然后用欧式距离算法求出n个属性之间的距离。
举个例子实现利用KNN实现电影分类:
这里写图片描述

3、我用KNN算法做过的一个小项目

经过上面的介绍,我相信大家都对KNN算法有了一个大致的了解,我们可以试着用KNN算法做出一个自己的小项目。我自己做的一个是用KNN算法实现手写识别,各位有兴趣的话可以一起交流一下。

原创粉丝点击