机器学习-初学KNN算法(k近邻算法)

 

       最近想搞点事情,用opencv实现手写数字、字母识别。核心算法就是KNN,好高大上,其实原理明白了也不难的。

        什么是KNN(k-NearestNeighbor),它是一个理论上比较成熟的方法,是一种最简单的分类算法,是基于实例的最基本的学习方法,是最好的文本分类算法之一,是数据挖掘分类技术中最简单的方法之一。(说白了就是一种分类器)

       KNN算法机器学习中“懒惰学习”的代表,它在训练阶段只是把数据保存下来,训练时间开销为0,等收到测试样本后进行处理。怎么理解,就像我,平时不学习,等到考试了就使劲复习,这样节省了平时的学习时间(训练时间),这样就需要在考试前花大把大把的时间复习(这样导致程序运行中,KNN分类器的运行效率低一点)。

具体原理是什么?  

        存在一个样本数据集合(每个数据都带有标签),也就是训练样本集,即我们通过标签知道 样本集中 每个数据 与 所属分类 对应的关系。然后在我们输入没有标签的数据后(也就是需要进行分类的数据),将新数据中的 每个特征 与 样本集中 数据对应的特征进行比较,提取出样本集中特征最相似数据(最近邻)的分类标签。

        用下面左图来解释其原理,绿色为新数据(需要归类的数据),你觉得图像中绿色归为红色三角合适还是蓝色矩形好?

KNN算法是这样分类的,如果K=3(也就是选择离着最近的三个样本数据,也就是小圆内),那么离绿色点最近的有2个红色的三角形和1个蓝色的矩形,这三个点进行投票,于是绿色的待分类点就属于红色的三角形。而如果K=5,那么离绿色点最近的有2个红色的三角形和3个蓝色的正方形,这五个点进行投票,于是绿色的待分类点就属于蓝色的矩形。

 

    KNN算法的决策过程图例                                         

         K值的选择会对k近邻法的结果产生重大影响。在应用中,k值一般取一个比较小的数值,通常采用交叉验证法来选取最优的k值,K一般取值不大于20。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值