目录
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实现代码
欢迎大家多多和我交流,共同进步。如果认为有用,点一波关注,谢谢~~~
领取专属 10元无门槛券
私享最新 技术干货