机器学习之KNN:最简单的分类器

版权声明:转载请注明出处~ https://blog.csdn.net/sinat_31425585/article/details/82861071

    1、KNN算法原理

    K近邻分类器可以说是目前为止最简单的机器学习和图像分类算法。实际上,由于其过于简单,算法不“学习”任何东西,取而代之的是这个算法直接依赖于特征向量之间的距离。

    具体来说,就是将所有数据样本的特征向量直接存储下来,然后基于某种相似性度量准则,查询与当前样本最近似的k个样本来进行投票,将投票结果作为最终的分类结果,翻译过来就是:“告诉我你的邻居是谁,我将告诉你,你是谁。”

    为了保证KNN算法能够工作,这里做了一个假设,有相似内容的图片在n维空间上距离较近。因此,我们可以看一下表示猫、狗和熊猫三个类别的图片,如图1所示,x轴表示图片分布的蓬松性,y轴表示动物外观。

         

                                                              图1 猫、狗和熊猫三个类别分布(摘自参考资料[1])

    为了应用KNN分类器进行分类,需要预先设定相似性度量准则,常见的度量准则有欧拉距离和曼哈顿距离,欧拉距离定义如式(1)所示。

                                                             d(\vec{p},\vec{q})=\sqrt{\sum_{i=1}^{N}(p_{i}-q_{i})^{2}}.....................(1)

    曼哈顿距离或 L_{1} 距离如式(2)所示。

                                                            d(\vec{p},\vec{q})=\sqrt{\sum_{i=1}^{N}|(p_{i}-q_{i})|}.....................(2)

    实际上,你可以选择最符合你数据的任何度量相似性准则(给你最好的分类结果)。

    2、KNN算法流程

    1) 收集数据集:获取样本图像,并将所有样本的大小都规范化到同一个尺寸;

    2) 分离数据集:将样本分为训练集和测试集两个部分;

    3) 训练分类器:使用训练样本集训练KNN分类器,其实就是将训练集存下来;

    4) 评估分类器:使用测试集来评估训练好的KNN分类器性能。

    KNN算法实例如图2所示。

               

                                                                                                图2 KNN算法实例(摘自参考资料[1])

    图2中就是样本分布示意,当一张猫图像(红色边界)来了,首先,找最近似的K(这里K=3)个训练样本,然后,利用这K个样本进行投票(这里K个样本中,2个为猫,1个为熊猫),最后,得出结论,当前样本为猫。

    3、代码实现

~~~~未完待续~~~~

参考资料:

[1] Deep_Learning_for_Computer_Vision_with_Python

猜你喜欢

转载自blog.csdn.net/sinat_31425585/article/details/82861071