KNN算法

一、KNN算法是什么?

KNN算法是一种基本的机器学习算法,用于分类和回归任务。它是一种无参数学习算法,也被称为懒惰学习算法,因为它不会从训练数据中显式地学习模型参数。在KNN算法中,通过将新的输入样本与训练样本进行相似度度量,来进行分类或回归预测。

二、KNN算法基本工作原理

通过选择最近邻居的多数类别(分类任务)或平均值(回归任务)来对待预测样本进行分类或回归。

三、KNN算法基本步骤 

对于分类任务:

  1. 计算训练集中每个样本与待预测样本之间的距离或相似度。
  2. 根据距离或相似度的大小,选择K个最近邻的训练样本。
  3. 统计这K个最近邻样本中出现最频繁的类别作为待预测样本的类别。

对于回归任务:

  1. 计算训练集中每个样本与待预测样本之间的距离或相似度。
  2. 根据距离或相似度的大小,选择K个最近邻的训练样本。
  3. 使用K个最近邻样本的输出值的平均值作为待预测样本的输出值。

四、KNN算法k值选取

1.当训练数据集较小时:

选择较小的K值可以减少噪声的影响,但也容易受到局部特征的干扰。

2.当训练数据集较大时:

选择较大的K值可以使决策边界更加平滑,但可能会导致错分类的概率增加

五、KNN算法实践

使用KNN算法预测一个人是否得癌症并输出此结论正确的概率

1.代码和实现思路:

使用csv包读取名为"Prostate_Cancer.csv"的数据文件,将其转换为字典格式存储在datas列表中。

使用random.shuffle函数打乱datas列表的顺序。

根据留一法将datas列表划分为训练集train_set和测试集test_set

定义了计算欧氏距离的distance函数,用于计算两个数据点之间的距离,并设置K值为5

定义一个knn函数,用于进行KNN分类:

在函数内部,遍历训练集train_set中的每个数据点,并计算其与输入数据点之间的距离。将计算的结果以字典的形式存储在res列表中,包括训练数据点的分类结果和与输入数据点的距离。使用sorted函数对res列表按照距离进行排序。取出前K个距离最小的数据点。对K个数据点进行加权平均,根据权重大小得出最终的分类结果。

定义correct变量并初始化为0,用于记录分类准确的样本数量。遍历测试集test_set中的每个数据点,分别计算其真实分类结果和KNN分类结果,并统计分类准确的样本数量。

2.运行结果

输出结果中:B为良性(无癌症),M为恶性(有癌症)

数据集:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值