【机器学习】【KNN】线性扫描算法,详解+python代码实现

1.KNN算法讲解

KNN算法,K最近邻分类算法(K-NearestNeighbor)是数据挖掘分类技术中最简单的方法之一。KNN的分类结果表明k个最近的邻居可以来代表测试样本数据的分类类型。


请思考一个问题,给二维坐标中点进行贴标签:

    已经有被贴了标签“A”的点:(4 35),(5 38), (6 30)

    已知有被贴了标签“B”的点:(10 12),(11 15),(12 10)

    现在有一个未被贴标签的点:(8 16)

    请问测试点(8 16)应该被贴上什么标签,是“A”还是“B”呢?

下面是python实现的KNN算法运行的结果图:

从图中可以看出KNN给测试数据(8,16)贴上了“B”标签,和(10 12),(11 15),(12 10)分类到了一起。上面已经被贴标签的数据就是训练数据样本集,而待贴标签的(8,16)数据就是测试数据集。也就是KNN算法根据训练数据集,将测试数据集进行贴标签进行分类。

下面说明下KNN算法的计算步骤:

    1)计算待测试数据与训练数据集中的每个训练数据之间的距

        KNN算法采取的是欧氏距离,即连个点之间的真是距离。如二维空间中俩点(x1, y1)、(x2、y2)的欧氏距离公式为:

                                          

    2)按照距离的递增关系对训练数据集中的数据进行排序

    3)获取距离最小的K个点,即排序中的前K个训练数据

    4)计算排序中的前K个训练数据所在标签出现的频率

    5)返回前K个点中出现频率最高的类别 作为 测试数据的预测分类


那我们按照上面的计算步骤,来将上面测试数据(8, 16)是如何被贴上标签"B"的,详细计算步骤如下所示

    被贴了标签“A”的点:(4 35),(5 38), (6 30)

    被贴了标签“B”的点:(10 12),(11 15),(12 10)

    未被贴标

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值