一、算法原理
- 计算抑制类别数据集中的点与当前点的距离(欧氏距离、马氏距离等)
- 按照距离递增依次排序
- 选取当前点距离最小的k个点
- 确定前k个点所在类别出现频率
- 返回前k个点出现频率最高的类别作为当前点的预测分类
注意:
关于k值个数的选择,其取决于数据。一般地,在分类时,较大k值可以减小噪声的影响,但会使类别界限变得模糊。
- 好的k值可以通过各种启发式技术来获取(eg.交叉验证)
- 噪声和非相关性特征向量的存在会使k近邻算法的准确性减小
近邻算法具有较强的一致性结果,随着数据趋于无线,算法的错误率不会超过贝叶斯算法错误率的2倍。对于一些好的k值,k近邻保证错误率不会超过贝叶斯理论误差率。
二、源码实现
|
|
三、测试代码
|
|