机器学习笔记三:K近邻算法

一、算法介绍:

      K近邻又称为KNN,是一种监督的机器学习算法,既可以用于回归也可以用于分类。它的计算结果完全取决于数据,不不是一个估算的模型,因此它需要把所有数据提前导入到内存中,对于大规模的数据,这个算法运行时间会非常长,同时,模型对于异常点敏感。

 二、算法原理:

      K近邻的原理其实十分简单,假设我们有一个二维的数据集,一共可以分成两类,那么我们可以把所有的数据都画在一张图上,这时候如果有一个新的数据点,我们要判断它属于哪一类,一个很简单的思想是我们可以计算距离这个点最近的K个点的分类情况,选择概率最大的类别作为当前点的类别。由此我们可以发现,对于K的不同取值,我们得到的这个点的类别可能会改变,因此在K近邻算法中,K的取值十分重要。

三、K近邻用于分类:

     (1) 不加权:输出 k 个最近邻中最常见的分类

     (2) 加权:将每个分类值的k个最近邻的权重相加,输出权重最高的分类

四、K近邻用于回归:

      (1) 不加权:输出k个最近邻值的平均值
      (2) 加权:对于所有分类值,将分类值加权求和并将结果除以所有权重的总和

所谓加权一般是根据距离加权。

五、K的取值:

       K是在模型初始化时就设定了的,但是我们常常不能确定取哪个值更好一点,除了经验以外,一个经常适用的方法是设定不同的K值,观察训练集和验证集的准确率的变化,找到一个最好的点所对应的K的取值。

六、 总结:

      关于如何度量给定点与其他已知点的距离,一般可以使用欧氏距离,这是最朴素的K近邻算法,但是也有很多改进算法,针对特定的情况会有好的表现。

    我在我的github上用python实现了一个K近邻的小程序,感兴趣的可以看一下。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值