ML——K近邻分类器(KNN)

KNN,属于监督学习的一种方法。
KNN是用于分类和回归的非参数统计方法,直接点说就是数据统计
KNN分类中,输出是一个分类族群。就像下边例子,一个对象的分类是由其邻居的最多的类别决定。如果k=1,则它的类别是直接由最近的一个点决定的。
KNN回归中,输出的是该对象的属性值。该值是其k个最近邻居的值的平均值。

训练样本是多维特征空间向量,每个样本都带有分类标签。训练阶段只包含存储的特征向量和训练样本的标签。

分类阶段,k是用户定义的常数,被预测的没有类别的标签向量(测试点)将被归类为最接近该点的k个样本点中最频繁使用的一类。维基百科上的一个比较容易理解的k近邻算法例子
在这里插入图片描述
测试样本(绿色圆形)应归入要么是第一类的蓝色方形或是第二类的红色三角形。如果k=3(实线圆圈)它被分配给第二类,因为有2个三角形和只有1个正方形在内侧圆圈之内。如果k=5(虚线圆圈)它被分配到第一类(3个正方形与2个三角形在外侧圆圈之内)。

算法流程:
1.算出样本集中的点与测试点距离
2.按距离大小进行排序
3.选择与测试点距离最小的k个点
4.统计这k个点的类别
5.返回这k个点出现频率最高的类别为测试点的分类

一般情况,将欧式距离(空间中两点间的直线距离)作为距离度量适用于连续变量。在文本分类的离散变量情况下,可以用重叠度量(海明距离)作为度量。还有别的计算度量方法在某些特殊情况下可以显著提高k近邻分类精度,如:大间隔最近邻居、邻里成分分析法。

这种多数表决分类会在类别分布偏斜时出现缺陷,比如出现频率较多的样本将会主导测试点的预测结果,因为它们比较大可能出现在测试点的K邻域而测试点的属性又是通过k邻域内的样本计算出来的。
解决办法之一是在进行分类时将样本到k个紧邻点的距离考虑进去。k近邻中点中每一个的分类都乘上与测试点之间的成反比的权重。

k值的选择,
如果k值过大,相当于使用较大邻域中的训练实例进行预测,可以减小估计误差,但是距离较远的样本也会对预测起作用,导致预测错误
如果k值过小,相当于使用较小的邻域进行预测,整体模型就会变得复杂,如果邻居是噪声点,有偏差的点,会导致过拟合

用sklearn中的模型写一个knn的小程序

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值