KNN算法是基本的机器学习方法,其原理很简单:如果一个实例在特征空间中的K个最相似(即特征空间中最近邻)的实例中的大多数属于某一个类别,则该实例也属于这个类别。其实际上是选择K个最可能的样本进行投票,这和k-means寻找k个几何中心点进行聚类是不同的. 如下图所示:
有两种类型的样本数据,一类是蓝色的正方形,另一类是红色的三角形,中间绿色的圆形是待分类数据.如果K=3,那么离绿色点最近的有2个红色的三角形和1个蓝色的正方形,这三个点进行投票,于是绿色的待分类点就属于红色的三角形。而如果K=5,那么离绿色点最近的有2个红色的三角形和3个蓝色的正方形,这五个点进行投票,于是绿色的待分类点就属于蓝色的正方形。
KNN算法的关键有两个:
- 特征空间的选择,也就是你如何来定义各个特征的距离;
- K值的选择,也就是最近邻的范围的选择;
在《机器学习实战》中给了两个例子,一个是关于网站约会推荐,一个是手写数字识别,相关的代码和注释都在我的github上:
KNN
参考资料:KNN算法原理详解