KNN算法获取最优K值

【机器学习】K-近邻算法(KNN)全面解析 K-近邻算法(K-Nearest Neighbors, KNN)是一种基于实例的学习方法,属于监督学习范畴。它的工作原理简单直观:给定一个训练数据集,对新的输入实例,KNN算法通过计算其与训练集中每个实例的距离,找出距离最近的K个邻居,然后根据这些邻居的类别(对于分类任务)或值(对于回归任务)来预测新实例的类别或值。KNN因其简单高效和无需训练过程的特点,在众多领域中得到广泛应用,如模式识别、推荐系统、图像分类等。KNN算法的核心思想是“物以类聚”,即相似的数据应有相似的输出。 阅读详情

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

近期学习KNN算法,接触到交叉验证(cross validation)和模型优化,接下来学习这些内容。


一、为什么需要交叉验证?

交叉验证目的:为了让被评估的模型更加准确可信

二、什么是交叉验证(cross validation)

2.1.分析

交叉验证:将拿到的训练数据,分为训练和验证集。将数据分成5份,其中一份作为验证集。然后经过5次(组)的测试,每次都更换不同的验证集。即得到5组模型的结果,取平均值作为最终结果。又称5折交叉验证。

2.2.KNN代码实现

在这里插入图片描述

2.3超参数搜索-网格搜索(Grid Search)

有很多参数是需要手动指定的(如k-近邻算法中的K值),这种叫超参数。但是手动过程繁杂,所以需要对模型预设几种超参数组合。每组超参数都采用交叉验证来进行评估。最后选出最优参数组合建立模型。
在这里插入图片描述

2.4超参数穷举法

import numpy as np
ks = [] #保存模型使用过的k值
scores = [] #保存模型对应k值的分值
for k in range(2,50,2):  # 穷举k值在2~50中的数
    knn = KNeighborsClassifier(n_neighbors=k).fit(x_train,y_train)
    score = knn.score(x_test,y_test)
    ks.append(k)
    scores.append(score)
arr_ks = np.array(ks)
arr_scores = np.array(scores)
arr_ks,arr_scores
np.argmax(arr_scores) #找出arr_scores数组中最大值对应的下标
arr_ks[np.argmax(arr_scores)]#找出最优的模型参数的值

总结

①K值较小,则模型复杂度较高,容易发生过拟合,学习的估计误差会增大,预测结果对近邻的实例点非常敏感。
②K值较大可以减少学习的估计误差,但是学习的近似误差会增大,与输入实例较远的训练实例也会对预测起作用,使预测发生错误,k值增大模型的复杂度会下降。
③在应用中,k值一般取一个比较小的值,通常采用交叉验证法来来选取最优的K值。
作者:心中有高数
链接:https://www.jianshu.com/p/21483858fcf6

Python 机器学习 K-近邻算法 K值的选择 选择K-近邻算法(KNN)的K值时,考虑数据集的大小是非常重要的。对于较小的数据集,较小的K值通常更好,因为较大的K值可能导致模型过于简化,无法捕捉数据中的细微差异。在使用K-近邻(KNN)算法时,避免选择过大的K值是很重要的。避免在K-近邻算法中选择过小的K值是非常重要的,因为过小的K值会导致模型过于敏感,容易受到数据中噪声的影响,从而引起过拟合。在使用K-近邻算法(KNN)时,选择奇数的K值可以是一个有益的策略,尤其是在解决分类问题时。如果存在多个具有相似误差的K值,选择更简单的模型(较大的K值)。 阅读详情

相关推荐

KNN算法 通过手肘法选取最优参数K(鸢尾花的数据)

实验目的:熟悉手肘法和KNN聚类 实验内容:针对iris数据集(相关信息详见https://archive.ics.uci.edu/ml/datasets/iris),进行KNN 分类模型的python实现,通过手肘法选取最优参数K(K不用超过10),并给出最优参数下以下新数据点的预测类别,并进行可视化(突出新数据点的位置,可视化所有数据的类别): (1)4.5,3.4, 2.1, 0.8 (2)5.5,2.4, 7.3, 1.5 (3)7.6, 3.3, 5.7, 5.2 通过手肘法选取最优参数K(K

吃饭的博客 1万+

KNN算法

KNN算法1. KNN算法原理1.1 K值选择1.2 距离计算1.3 算法优缺点 1. KNN算法原理 k近邻方法是一种惰性学习算法,可以用于回归和分类,它的主要思想是投票机制,对于一个测试实例x, 我们在有标签的训练数据集上找到和最相近的k个数据,用他们的label进行投票,分类问题则进行表决投票,回归问题使用加权平均或者直接平均的方法。 1.1 K值选择 kNN中的k是一个超参数,需要我们进行指定,一般情况下这个k和数据有很大关系,都是交叉验证进行选择,但是建议使用交叉验证的时候,k∈[2,20],使用

wc842809936的博客 5568

机器学习之用于找到最优K值的K折交叉验证详解(附高阶鸢尾花分类的代码实现)

机器学习13_K折交叉验证(2021.05.27) 一. 解惑 为什么需要用到K折交叉验证?K值交叉验证的基本思想是什么? 1.目的:虽然有时候画出了KNN算法的学习曲线,找到了貌似最优的K值,但在使用KNN算法进行模型的训练时,难免会出现由于刚好这组测试集的测试结果良好,而导致的预测或分类结果假好的情况。因此,为了选出最为合适的模型超参数K的取值,从而将该超参数K的值作用到模型的创建中,K折交叉验证就是必须的了。 2.基本思想:将样本数据中的训练数据交叉地拆分出不同的训练集和测试集,使用交叉拆分出不同

weixin_40247876的博客 5489

KNN算法(一)

前言:什么是KNN算法 KNN 全称K-nearst neighbors,K近邻算法,是一种典型的监督学习算法。 通俗地讲,K近邻算法实际上是将待预测的样本置入到数据集中(对于这个数据集的说明详见后文),然后通过用与它最靠近的K个样本来代表待预测的样本。 记得看过一个论点:一个人的收入,可以通过用与他经常交往的五个人收入的平均数来确定。也就是所谓物以类聚,人以群分;近朱者赤,近墨者黑。KNN算法...

Stay Focused And Work Hard !!! 1万+

11、K近邻算法(KNN)

本文首先介绍了KNN算法的直观理解、算法三大要素、优缺点,并说明了如何实现KNN算法,最后讲解了sklearn中的KNN使用。

m0_56642803的博客 1211

K近邻算法(knn)及R实现

K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1时,算法便成了最近邻算法,即寻找最近的那个邻居。为何要找邻居?打个比方来说,假设你来到一个陌生的村庄,现在你要找到与你有着相似特征的人群融入他们,所谓入伙。     用官方的话来说,所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练

古韦的专栏 5899

大数据最新机器学习算法(1)—— K-近邻算法_k近邻算法k的取值(2),先睹为快

根据KNN每次需要预测一个点时,我们都需要计算训练数据集里每个点到这个点的距离,然后选出距离最近的k个点进行投票。当数据集很大时,这个计算成本非常高,针对N个样本,D个特征的数据集,其算法复杂度为O(DN^2​​)kd树:为了避免每次都重新计算一遍距离,算法会把距离信息保存在一棵树里,这样在计算之前从树里查询距离信息,尽量避免重新计算。其基本原理是,如果A和B距离很远,B和C距离很近,那么A和C的距离也很远。有了这个信息,就可以在合适的时候跳过距离远的点。这样优化后的算法复杂度可降低到O(DNlogN)

2401_84185224的博客 810

ML 1.什么是KNN(K近邻算法)

K近邻算法: ·思想极度简单 ·应用的数学知识少(近乎为零) ·效果好(有什么缺点?) ·可以解释机器学习算法使用过程中的很多的细节问题 ·更完整的刻画机器学习应用的流程 1.什么是KNN? 何谓K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1时,算法便成了最近邻算法,即寻找最近的那个邻居。 用官...

kokopop007的博客 2161

Scikit-learn_分类算法_k-近邻算法

通过训练已知分类的数据集,从中可以发现分类规则,并以此预测新数据的所属类别,这被称为分类算法 一.k-近邻算法 描述 对于待分类的样本,从训练集中找出k个和它距离最近的样本,考察这些样本中哪一个标签最多,就给-待分类样本贴上改标签。 k值的最佳选择高度依赖数据,通常较大的k值会抑制噪声的影响,但同时也会使分类界限不明显。通常k值是不大于20的整数。 用法和参数 neighbors提供了两种不同的最近邻分类器: 一种是基于待分类样本点的k个最近邻实现,其中k是用户指定的整数值 另一种是基于待分类样本点的

feizuiku0116的博客 356

K-近邻算法(KNN)

概述简单地说,K-近邻算法(K-Nearest-Neighbors Classification)采用测量不同特征值之间的距离方法进行分类。 优点:精度高、对异常值不敏感、无数据输入假定 缺点:计算复杂度高、空间复杂度高 使用数据范围:数值型和标称型 工作原理:要确定测试样本属于哪一类,就寻找所有训练样本中与该测试样本“距离”最近的前K个样本,然后看这K个样本大部分属于哪一类,那么就认为这个测试样本

困而学之,学思并重 5900

R语言使用mlr包创建回归任务、指定回归学习函数为KNN回归模型、网格搜索、交叉验证调节KNN模型的超参数K获取模型最佳的K值、结合最优参数K值训练最终的KNN回归模型

R语言使用mlr包创建回归任务、指定回归学习函数为KNN回归模型、网格搜索、交叉验证调节KNN模型的超参数K获取模型最佳的K值、结合最优参数K值训练最终的KNN回归模型

statistics+insight+vista+power 423

通过交叉验证寻找K近邻算法的最优K值

问题引出 之前我们使用K近邻算法尝试寻找用户年龄与预估薪资之间的某种相关性,以及他们是否有购买SUV的决定。主要代码如下: from sklearn.neighbors import KNeighborsClassifier classifier = KNeighborsClassifier(n_neighbors=5, metric='minkowski', p=2) classifier....

孙某人的博客 1万+

掌握KNN算法:以手写数字识别为例

K最近邻算法(K-Nearest Neighbors, KNN)是一种基本分类与回归方法。KNN的工作原理很简单,它存储了所有可用案例,并根据新案例与这些案例之间的距离进行分类。分类是通过投票来完成的,最邻近的K个案例拥有最大权重,通过它们的分类决定新案例的分类。KNN算法在数据挖掘、模式识别、图像处理等领域有着广泛的应用。欧氏距离是最常见的距离度量方法,它基于勾股定理,用于测量两个点在欧几里得空间中的直线距离。

weixin_35750747的博客 918

K近邻算法(k-nearest neighbor,KNN)

K近邻算法(k-nearest neighbor,KNN) 经过一周昏天黑地的加班之后,终于到了周末,又感觉到生活如此美好,遂提笔写一写KNN,这个也许是机器学习众多算法中思想最为简单直白的算法了,其分类思想,总结起来就一句话:近朱者赤,近墨者黑。当然,KNN也可以用于回归任务,在回归任务中,采用“平均法”,即把离预测样本最近的K个样本的label(连续值)取平均作为预测结果,也可以根据距离远近进...

天泽28的专栏 6255

保姆级教程:RK3588部署yolo目标检测模型

RK3588部署yolo目标检测模型非常详细的保姆级教程

ling913的专栏 5487

WRF模型下中国土地利用数据替换USGS-24分类的完整实践指南

本文提供了在WRF模型中,将中国土地利用数据替换默认USGS-24分类的完整实践指南。详细阐述了替换下垫面数据的必要性,并分步讲解了数据准备、坐标转换、分类体系重映射、格式转换及配置文件修改等核心操作,旨在帮助用户提升针对中国区域的模拟精度。

salt的博客 777

K 值选对,准确率翻倍:KNN 算法调参的黄金法则

KNN 算法以其简单性和直观性成为机器学习入门的经典算法,适用于小规模、低维数据的快速分类 / 回归任务。尽管存在计算效率和高维性能的局限,但其思想为许多复杂算法提供了基础。通过数据预处理、近似搜索和加权机制,KNN 的实用性可进一步提升

羑悻的博客. 2549

AI+Xmind自动生成测试用例(思维导图格式)

最后:我是Walker,一个热爱分享编程知识的程序员,希望能够帮助到你!

Think_and_work的博客 2333

k-近邻(knn)算法

k近邻(knn)算法的简介和实现 一、k近邻算法的概述二、用python实现k近邻算法三、k近邻算法案例应用四、总结二级目录三级目录 最近小阿奇在学习机器学习算法,所以决定把相关原理和代码整理出来和小伙伴们一起分享 一、k近邻算法的概述 k-近邻算法(k-Nearest Neighbour algorithm),又称为KNN算法。KNN的工作原理:给定一个已知标签类别的训练数据集,输入没有标签的新数据后,在训练数据集中找到与新数据最邻近的k个实例,如果这k个实例的多数属于某个类别,那么新数据就属于这个类别。

Wwwwwww527的博客 7494

Adobe软件非正版弹窗终极解决方案:PS/Ai/PR/AE禁用提示一键清除指南

本文提供了Adobe软件非正版弹窗的终极解决方案,包括PS、Ai、PR、AE等软件的禁用提示一键清除指南。通过专业清理工具和手动修改系统文件的方法,帮助用户彻底解决Adobe弹窗问题,提升使用体验。适用于Windows和Mac系统用户,操作简单高效。

weixin_30872337的博客 5332

VTK四视图联动避坑指南:解决vtkImagePlaneWidget窗宽窗位同步与切片序号更新的那些坑

本文详细解析了VTK四视图联动开发中的关键技术点与常见问题,包括切片位置同步、窗宽窗位同步的实现原理及回调机制设计。针对开发中遇到的回调事件不触发、渲染性能低下等问题,提供了实用的解决方案和优化技巧,帮助开发者高效构建医学影像和科学可视化应用。

weixin_42638178的博客 391

KNN算法(K近邻算法)

KNN算法是一种基于相似度的分类和回归方法,通过计算样本距离进行分类预测。关键要素包括k值选择(影响模型复杂度)、距离度量(欧氏/曼哈顿/切比雪夫距离)和特征预处理(归一化/标准化)。应用流程包含数据分割、模型训练、预测评估等步骤,案例演示了鸢尾花分类和手写数字识别。算法优势是简单直观,但需注意k值选择和特征缩放对结果的影响。

pan13360344415的博客 2007

华为OD机试真题 新系统 9月20号 【字符串分组求和】

华为OD新系统机试真题【字符串分组求和】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【字符串分组求和】解析。

qq_45776114的博客 616

MachineLearning 4. 癌症诊断方法之 K-邻近算法(KNN)

机器学习方法中的K-邻近算法,在肿瘤诊断中,尤其是乳腺癌表现强健

weixin_41368414的博客 4118

月薪30k+的工业视觉,必备Java+YOLO技能(工业级落地全拆解)

30k+工业视觉岗的核心不是算法调参,而是用Java把YOLO落地到工业场景的能力——稳运行、能对接、可管理是高薪的核心壁垒;必备技能分五层:模型工业级适配、Java推理核心、SpringBoot后端、工业部署运维、场景适配,每层都要练到“能落地、能讲清、能避坑”;学习路径的核心是“实战驱动”:不要只学理论,从一个完整的工业项目(如锂电缺陷检测)入手,练完就能对标高薪岗。

2601_94871597的博客 524

自动化上位机开发C#100例:如何用面向对象的方式封装雷赛运动控制卡EtherCAT总线卡(C#代码)

自动化上位机开发C#100例:雷赛运动控制卡EtherCAT总线卡C#封装类。

十多年IT经验,专注机器视觉,智能制造半导体行业 5030
上一篇: 在pycharm中设置Anaconda解释器
下一篇: 机器学习中,knn算法后续对k值使用cross_val_score和GridSearchCV的区别
disccutter
博客等级 码龄7年 17粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值