K-近邻算法(KNN)
k近邻算法就是先确定一个准确数字k值,然后在这个当前点的周围查找最小距离的k个点,然后在这k个点里面把这几个点进行分类,概率最大的就最为当前点的分类。
分类步骤:
1,计算已知数据集中的点与当前点的距离。
2,把距离进行排序。
3,选取距离最近的k个点
4,确定前k个点出现类别的概率
5,返回前k个点出现频率最高的类别作为当期点预测分类
特点:
1,KNN算法本身就简单有效,是一种lazy-learning算法
2,分类器不需要训练集进行练习,训练时间为0
3,分类器的时间复杂度和训练几种的文档数成正比,也就是说,如果文档数为n,那么KNN的时间复杂度就是o(n)。
如果是数值的话,求距离当然是可行的,但是如果是图片呢?图片是没有数值这一说法的,所以要求距离,就只能用像素了。两个图片的像素相减就是距离。
python代码:
可以使用第二种求距离的方法,平方差:
但是K近邻事实上并不适合图片分类,效果不好,因为比如有一张图片是天空和飞机,另外一张是火车和飞机,两张图片的背景如果是差不多的话,他们的距离会很小,这样就会造成误差。
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。