KNN模型进行分类和回归任务

KNN算法基于近朱者赤,近墨者黑原则,通过计算待分类物体与已知类别物体的距离,选择最近的K个邻居确定分类。文章介绍了KNN中的重要超参数K的选择方法,如网格搜索、K折交叉验证和自助法,并提供了使用Scikit-Learn的GridSearchCV进行超参数调优的示例代码。此外,还展示了KNN与其他算法(如SVM、朴素贝叶斯和决策树)在手写数字识别任务上的准确率对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

KNN工作原理
“近朱者赤,近墨者黑”可以说是KNN的工作原理。整个计算过程分为三步:1:计算待分类物体与其他物体之间的距离;2:统计距离最近的K个邻居;3:对于K个最近的邻居,它们属于哪个分类最多,待分类物体就属于哪一类。K-最近邻算法(K-Nearest Neighbor, KNN)中的K值是一个重要的超参数,不同的K值会影响模型的性能。常见的选择K值的方法包括以下几种

  • 网格搜索(Grid Search):指定一组候选的K值,对每个K值进行交叉验证,选取平均交叉验证误差最小的K值作为最佳K值。缺点是需要进行大量的计算,时间开销较大。
  • K折交叉验证(K-fold Cross Validation):将训练集分成K个子集,每次使用其中K-1个子集作为训练集,剩下的1个子集作为验证集,重复K次。对于每个K值,计算K次的平均交叉验证误差,选取平均交叉验证误差最小的K值作为最佳K值。这种方法的优点是可以减少模型的方差,但是计算时间仍然比较长。
  • 自助法(Bootstrap):从训练集中有放回地随机抽取样本,构建新的训练集。对于每个K值,计算自助样本的平均误差,选取平均误差最小的K值作为最佳K值。这种方法的优点是计算速度快,但是对于小数据集来说,可能会出现较大的方差。

网格搜索(Grid Search)

接下来先看看如何通过网格搜索(Grid Search)获取K值。GridSearchCV是Scikit-Learn库中用于网格搜索的函数,其主要作用是在指定的超参数范围内进行穷举搜索,并使用交叉验证来评估每种超参数组合的性能,以找到最优的超参数组合。该函数包含多个参数,具体参数以及每个参数含义如下所示:

estimator:通常是一个Scikit-Learn模型对象,例如KNeighborsClassifier()、RandomForestClassifier()等,用于表示要使用的模型。
param_grid:需要遍历的超参数空间,是一个字典,其中每个键是一个超参数名称,对应的值是超参数的取值列表。例如,对于KNN模型,可以指定param_grid = {'n_nei

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

taoli-qiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值