KNN 是一种非参数的懒惰的监督学习算法.
非参数的意思是,模型不会对基础数据分布做出任何假设。换句话说,模型的结构是根据数据确定的。懒惰的意思是没有或者只有很少的训练过程.
KNN 算法既可以处理分类问题,测试数据的类型由所有 K 个最近邻点投票决定,也可以处理回归问题,测试数据的值是所有 K 个最近邻点的值的均值或众数.
KNN 的算法非常简单.
例如,对于分类问题,算法流程如下,
对需要预测的每个数据依次执行以下操作:
需要注意的是,要对数据进行特征缩放.下面两张图很好的阐释了缩放的重要性.
那么 KNN 在实际使用中有哪些优点和缺点呢?
它的优点有:
它的缺点是
在实际的使用过程中,可能会遇到如下的问题.
2.训练数据的缺失值如何处理.如果不处理缺失值,则无法计算距离.对于缺失值的处理的核心原则是,尽可能小的影响距离的计算.一个合理的解决办法是,使用训练数据的平均值来填充缺失值.
附上完整代码,登录之后就能查看了。 查看源码
参考资料
1
dezhou9 2019-01-10 19:05:25 +08:00 via Android
knn 不是计算量小吗?谁总结的
|