参考:https://www.cnblogs.com/bigmonkey/p/7387943.html
- 原理
给定一个多标签分类问题。有一些已知标签的数据,然后对未知对象打标签。k均值算法基于这样的假设:(1)距离越近的对象标签相同的概率越大,(2)对象标签分布具有局部一致性
既然局部是一致的,那么就用距离未知对象最近的k个已知对象的标签给出的分布的众数作为预测类别标签。
注意:1.在算距离前不同的特征需要去量纲,通常使用线性变换到[0,1]实现
2.如果从假设(1)出发,考虑更为细致些,就可以设计一个与距离相关的加权贡献分布来替代原始算法的均匀贡献分布(原始算法中k个对象的贡献程度是均匀的),一般用高斯函数加权
问题:1.怎样的数据适合使用kNN算法,这样的数据如何取训练集合适?
2.不同的特征重要程度可以不同,能不能通过赋予权重学习这个重要程度的分布?
- 实践
使用《机器学习实战》中的代码,进行一定的改动。有数据1000例,从中随机选出[50, 500)例作为测试集,其余作为训练集,得到错误率的曲线图:(以下做了多次试验,因为有随机性所以曲线不同)