python knn代码详解_手写算法-python代码实现KNN

本文详细解析了K-Nearest Neighbor(KNN)算法原理,包括K值选择、距离计算和决策规则。通过实例展示了如何用Python编写KNN分类任务代码,并与sklearn库中的KNN分类器进行了对比,探讨了大数据集下的优化方法和多种距离度量方式。
摘要由CSDN通过智能技术生成

原理解析

KNN-全称K-Nearest Neighbor,最近邻算法,可以做分类任务,也可以做回归任务,KNN是一种简单的机器学习方法,它没有传统意义上训练和学习过程,实现流程如下:

1、在训练数据集中,找到和需要预测样本最近邻的K个实例;

2、分别统计这K个实例所属的类别,最多的那个类别就是样本预测的类别(多数表决法);

对于回归任务而言,则是求这K个实例输出值的平均值(选择平均法);

因此,该算法的几个重点在于:

1、K值的选取,K值的不同直接会导致最终结果的不同;

选择较小的k值,就相当于用较小的领域中的训练实例进行预测,训练误差会减小,只有与输入实例较近或相似的训练实例才会对预测结果起作用,与此同时带来的问题是泛化误差会增大,换句话说,K值的减小就意味着整体模型变得复杂,容易发生过拟合;

选择较大的k值,就相当于用较大领域中的训练实例进行预测,其优点是可以减少泛化误差,但缺点是训练误差会增大。这时候,与输入实例较远(不相似的)训练实例也会对预测器作用,使预测发生错误,且K值的增大就意味着整体的模型变得简单,容易欠拟合;

一般的,最佳K值的选取,我们可以用交叉验证法来寻找,分类准确率最高的(回归问题中就是均方误差最小的),就是最佳的K值;

2、距离的计算,计算最近邻的K个样本时,用哪种度量方式,最常用的是欧氏距离;

3

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值