机器学习之K邻近算法 (KNN)

来源:互联网 发布:licecap for mac 下载 编辑:程序博客网 时间:2024/04/24 13:50

K邻近算法思想 :

在对于一个分类的问题而言,我们一般希望在已知样本点中找到一个和要预测的点完全相同的点,然后进行预测,但是由于我们的样本空间有限,所以不可能找到所有的要出现的点的全部集合。但是有一种直观的感受(据说是存在数学原理的)就是说一类相似事物,他们的特征非常接近,这说明什么呢 ? 说明 如果我们找不到与预测样本完全相同的特征点,但是我们可以找到离这个样本点最近的k个点,然后根据这k个点中所包含的类别,类别最多的类,作为要分类的时候得到的类别就可以了。

算法的核心 ——-确定K

确定K的方法一般是通过交叉验证法(将已知数据划分成三个集合,具体还是自己搜)获得最小误差的k当做我们要使用的k就好了。

算法的实现 : 有python 、 matlab 的都可以代码很多 不过我还是觉得c++ 比较优雅,虽然不是很好写

大概的写法是 (不一定是最节省时间的) 对于新加入的一个点,求出所有的距离排序一下取出前k个用交叉验证集验证下准确率有多少就可以了。

一般来说,对于非线性可分的效果还可以,就是时间空间开销有点大。

阅读全文
0 0
原创粉丝点击