头歌KNN算法详解

目录

任务描述

相关知识

kNN 算法的算法流程

kNN 算法的优缺点

编程要求

测试说明

答案

解释


任务描述

本关任务:补充 python 代码,完成 kNNClassifier 类中的 fit 函数与 predict 函数。实现 kNN 算法的训练与预测功能。

相关知识

为了完成本关任务,你需要掌握 kNN 算法的算法流程。

kNN 算法的算法流程

kNN 算法其实是众多机器学习算法中最简单的一种,因为该算法的思想完全可以用 8 个字来概括:“近朱者赤,近墨者黑”

假设现在有这样的一个样本空间,该样本空间里有宅男和文艺青年这两个类别,其中红圈表示宅男,绿圈表示文艺青年。如下图所示:

其实构建出这样的样本空间的过程就是 kNN 算法的训练过程。可想而知 kNN 算法是没有训练过程的,所以 kNN 算法属于懒惰学习算法。

假设我在这个样本空间中用黄圈表示,如下图所示:

现在使用 kNN 算法来鉴别一下我是宅男还是文艺青年。首先需要计算我与样本空间中所有样本的距离。假设计算得到的距离表格如下:

样本编号12...1314
标签宅男宅男...文艺青年文艺青年
距离11.29.5...23.337.6

然后找出与我距离最小的 k 个样本(k 是一个超参数,需要自己设置,一般默认为 5),假设与我离得最近的 5 个样本的标签和距离如下:

样本编号45678
标签宅男宅男宅男宅男文艺青年
距离11.29.57.75.815.2

最后只需要对这 5 个样本的标签进行统计,并将票数最多的标签作为预测结果即可。如上表中,宅男是 4 票,文艺青年是 1 票,所以我是宅男。

注意:有的时候可能会有票数一致的情况,比如 k=4 时与我离得最近的样本如下:

样本编号491113
标签宅男宅男文艺青年文艺青年
距离4.29.57.75.8

可以看出宅男和文艺青年的比分是 2:2,那么可以尝试将属于宅男的 2 个样本与我的总距离和属于文艺青年的 2 个样本与我的总距离进行比较。然后选择总距离最小的标签作为预测结果。在这个例子中预测结果为文艺青年(宅男的总距离为 4.2+9.5,文艺青年的总距离为 7.7+5.8)。

kNN 算法的优缺点

从算法流程中可以看出,kNN 算法的优点有:

  • 原理简单,实现简单;
  • 天生支持多分类,不像其他二分类算法在进行多分类时要使用 OvO、 OvR 的策略。

缺点也很明显:

  • 当数据量比较大或者数据的特征比较多时,预测过程的时间效率太低。

编程要求

根据提示,在右侧编辑器的 begin-end 区域补充代码,完成 kNNClassifier 类中的 fit 函数与 predict 函数。

fit 函数用于 kNN 算法的训练过程,其中:

  • feature :训练集数据,类型为 ndarray;

  • label :训练集标签,类型为 ndarray。

predict 函数用于实现 kNN 算法的预测过程,函数返回预测的标签,其中:

  • feature :测试集数据,类型为 ndarray。(PS:feature中有多条数据)

测试说明

只需完成 fit 与 predict 函数即可,程序内部会调用您所完成的 fit 函数构建模型并调用 predict 函数来对数据进行预测。预测的准确率高于 0.9 视为过关。

答案

解释

题目给的feature时38*5的二维数组即后面的self.train_feature

所以答案中37,55行中的test_data,vec都是1*5一维数组,

所以37行代表一个五维的点与五维的点的距离

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
KNN算法是一种基于实例的学习算法,用于分类和回归。对于心脏病预测问题,KNN算法可以用于分类。下面是使用KNN算法进行心脏病预测的详细过程: 1. 准备数据集:收集一组已知分类的心脏病患者的数据集,并将每个患者的数据表示为一个特征向量。 2. 特征选择:选择合适的特征用于分类。在心脏病预测中,可以选择一些与心脏病相关的特征,如年龄、性别、血压、胆固醇、血糖等。 3. 特征归一化:对特征进行归一化处理,使得每个特征在数值上具有统一的尺度。可以通过标准化、最小-最大规范化等方法进行特征归一化。 4. 选择K值:K值是指选择最近的K个样本进行分类。一般可以通过交叉验证等方法来选择最优的K值。 5. 计算距离:对于待预测的样本,计算它与已知分类的每个样本之间的距离。可以使用欧式距离、曼哈顿距离等距离度量方式。 6. 找出K个最近邻:选出与待预测样本距离最近的K个样本作为最近邻。 7. 决策规则:根据最近邻的类别,使用多数表决等规则进行分类决策。即如果最近邻中大多数属于心脏病患者,则将待预测样本分为心脏病患者类别。 8. 输出预测结果:根据决策规则,将待预测样本分类为心脏病患者或非患者,并输出预测结果。 总之,KNN算法通过计算待预测样本与已知样本之间的距离,找出K个最近邻,并根据多数表决等规则进行分类决策。在进行心脏病预测时,可以根据患者的各项特征,如年龄、性别、血压、胆固醇、血糖等,来进行预测。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值