在OpenCV里使用kNN算法

在本文里主要学习kNN(k-Nearest Neighbour)算法。kNN是一个在监督学习里最简单的分类学习算法,其思想是在特征空间中寻找测试数据的最接近匹配。可以通过下图来说明:

在上面的图像里,主要有两大家族:蓝色方块和红色三角。把每一个家族相同的特征分开,叫做分类(Class)。他们的房子显示在他们的城镇地图上,我们称之为特色空间。也可以认为特征空间就是特征数据投影的空间。比如在2D坐标空间里,每个数据有两个特征x和y轴坐标,可以在二维坐标空间中表示这些数据,对吧?如果考虑一下有三个特征,那么需要3D空间来表示了。如果有N个特征,那么就需要N维空间来表示吧?这个N维空间就是特征空间。在我们上面的图像可以认为是一个二维特征空间。

突然有一个新成员准备进入住上面城镇,并打算建立自己的新家庭,他就是绿色的圆形块。那么他要选择加入蓝色或红色的家族,把加入家族的处理过程叫做分类(Classification)。那么我们应该怎么样决定他加入哪一个家族呢?由于这里采用kNN算法,那么就来应用这个算法来处理这个问题。有很多方法可以采用来分别,但这里采用他的邻居的特征来决定他加入的家族。从上图可以看到,他非常接近红色三角形的家族,那么就决定他加入红色三角形家族。这样的处理方法就叫做近邻算法(Nearest Neighbour),他的分类是以他的最接近的邻居特征来决定的。但是这样处理也许有一些问题,红色三角形是最接近他的,不过在他附近也有不少蓝色方

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览

应支付9.90元
点击重新获取
扫码支付

支付成功即可阅读