机器学习笔记二——k近邻

机器学习系列笔记二:K近邻算法与参数调优[上] 机器学习系列笔记二:K近邻算法与参数调优[上] 文章目录机器学习系列笔记二:K近邻算法与参数调优[上]手写KNN模拟数据KNN的过程对手写的算法进行封装scikit-learn对KNN算法的封装使用sklearn提供的KNN通过对sklearn的使用重新封装手写的KNN判断机器学习算法的性能数据分离准确度超参数和模型参数寻找好的超参数寻找最好的k考虑距离?不考虑距离?距离的定义搜索Minkowski Distance相应的p KNN算法具有如下特点: 思想简单 应用数据知识少 效果好 可以解释机器学习算法 阅读详情

一、K近邻

1.1 基本介绍

k近邻法(k-NN)是一种基本的分类和回归方法,更偏向于分类。k近邻简单直观:给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最接近的k个实例,这k个实例的多数属于某个类,就把该输入实例分为这个类。k近邻模型没有显式的学习过程,有三个要素:k值的选择、距离度量和分类决策规则。

1.2 k值的选择

如果选择较小的k值,就相当于用较小的邻域中的训练实例进行预测,近似误差会减小,但估计误差会增大,容易受到噪声的干扰。也意味着模型整体变得比较复杂,容易发生过拟合。

如果选择较大的k值,就相当于用较大的邻域中的训练实例进行预测,可以减少学习的估计误差,但学习的近似误差会增大。也意味着模型变得简单,容易发生欠拟合。

通常是选取一个比较小的值,然后采用交叉验证法来选取最优的k值。

1.3 距离的度量

特征空间中两个实例点的距离是两个实例点相似程度的反映。不妨设特征空间是 R n \bm R^n Rn,有两点 x i = ( x i ( 1 ) , x i ( 2 ) , ⋯   , x i ( n ) ) , x j = ( x j ( 1 ) , x j ( 2 ) , ⋯   , x j ( n ) ) x_i=(x_i^{(1)}, x_i^{(2)}, \cdots, x_i^{(n)}), x_j=(x_j^{(1)}, x_j^{(2)}, \cdots, x_j^{(n)}) xi​=(xi(1)​,xi(2)​,⋯,xi(n)​),xj​=(xj(1)​,xj(2)​,⋯,xj(n)​),一般使用的有 L p L_p Lp​距离和Minkowski距离:

L p L_p Lp​距离: L p ( x i , x j ) = ( ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ p ) 1 p (1) L_p(x_i, x_j)=(\sum\limits_{l=1}^n|x_i^{(l)}-x_j^{(l)}|^p)^{\frac{1}{p}}\tag1 Lp​(xi​,xj​)=(l=1∑n​∣xi(l)​−xj(l)​∣p)p1​(1)
欧式距离( p = 2 p=2 p=2): L 2 ( x i , x j ) = ( ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ 2 ) 1 2 (2) L_2(x_i, x_j)=(\sum\limits_{l=1}^n|x_i^{(l)}-x_j^{(l)}|^2)^{\frac{1}{2}}\tag2 L2​(xi​,xj​)=(l=1∑n​∣xi(l)​−xj(l)​∣2)21​(2)
曼哈顿距离( p = 1 p=1 p=1): L p ( x i , x j ) = ( ∑ l = 1 n ∣ x i ( l ) − x j ( l ) ∣ ) (3) L_p(x_i, x_j)=(\sum\limits_{l=1}^n|x_i^{(l)}-x_j^{(l)}|)\tag3 Lp​(xi​,xj​)=(l=1∑n​∣xi(l)​−xj(l)​∣)(3)
p = ∞ p=\infty p=∞时, L ∞ ( x i , x j ) = max ⁡ l ∣ x i ( l ) − x j ( l ) ∣ (4) L_{\infty}(x_i, x_j)=\max_l|x_i^{(l)}-x_j^{(l)}|\tag4 L∞​(xi​,xj​)=lmax​∣xi(l)​−xj(l)​∣(4)

1.4 分类决策规则

k近邻法中的分类决策规则往往是多数表决,即由输入实例的 k k k个邻近的训练实例中的多数类决定输入实例的类。

二、k近邻法的实现:kd树

2.1 基本思想

k近邻法最简单的实现方法是线性扫描,这时要计算输入实例与每个训练实例的距离,当训练集很大时,计算非常耗时。为了提高k紧邻搜索的效率,可以使用特殊的结构存储训练数据,以减少计算距离的次数,其中的一种方法就是kd树。

2.2 构造kd树

kd树是一种对k维空间中的实例点进行存储以便对其进行快速检索的树形数据结构。kd树是二叉树,表示对k维空间的一个划分。

构造kd树的方法如下:构造根节点,使根节点对应于k维空间中包含所有实例点的超矩形区域。通过下面的递归方法,不断的对k维空间进行划分,生成子节点。即:在超矩形区域上选择一个坐标轴和在此坐标轴上的一个切分点(一般为中位数),确定一个超平面,这个超平面通过切分点并垂直于选定的坐标轴,将当前超矩形区域切分为左右两个子区域(子节点);这时,实例点被分到两个子区域。这个过程直到子区域内没有实例点时终止(终止的节点为叶节点)。

2.3 搜索kd树 在这里插入图片描述

2.4 优缺点

  • 优点:
    • KNN是一种在线技术,新数据可以直接加入数据集而不必进行重新训练
    • KNN理论简单,容易实现
    • 对异常值不敏感
    • 既可以做回归,又可以做分类,更多是做分类
  • 缺点:
    • 对于样本容量大的数据集计算量比较大。
    • 样本不平衡时,预测偏差比较大。
    • 受 k k k值影响较大

2.5 其它

YOLOv11+SAHI实战:5步搞定无人机航拍小目标检测(附VisDrone数据集调参技巧) 本文详细介绍了如何结合YOLOv11目标检测框架与SAHI切片推理技术,高效解决无人机航拍图像中的小目标检测难题。通过VisDrone数据集调参技巧和5步实战指南,帮助开发者快速构建高性能检测系统,显著提升小目标检测的准确率和效率。 阅读详情

相关推荐

基因家族Motif 分析

MEME

hgz2020的博客 6317

KNN算法:线性扫描的原理实现及结果

K-最近邻算法(K - Nearest Neighbors,KNN)是一种基本分类与回归方法,可看做是最近邻算法(K=1)的一个延伸。 KNN基本思路是:选择未知样本一定范围内确定个数的K个样本,该K个样本大多数属于某一类型,则未知样本判定为该类型。 如何选择一个最佳的K值取决于数据。一般情况下,在分类时较大的K值能够减小噪声的影响,但会使类别之间的界限变得模糊。 看图说话: 待测样本(绿色圆圈)既可能分到红色三角形类,也可能分到蓝色正方形类。如果k取3,从图可见,待测样本的3个邻居在实线的内圆里,按多数投

Legend105CC 2185

保姆级教程:用QSTEM和DrProbe搞定你的第一张STEM模拟图(附Fe3O4实例文件)

本文提供了一份详细的STEM模拟图像生成教程,涵盖从晶体结构获取到最终图像模拟的全过程。通过QSTEM和DrProbe软件的操作指南,帮助材料科学研究者快速掌握STEM模拟技术,特别适合初学者。教程包含Fe3O4实例文件,详细解析参数设置、计算优化和结果分析等关键步骤。

weixin_33730836的博客 523

k近邻算法之 k值的选择

k近邻算法之k值的选择 举例说明: K值过小: 【过拟合】 ​ 容易受到异常点的影响 【如:美人鱼本身就是喜剧片,假如统计的时候记为动作片,则对预测值的影响太大】 k值过大: 【欠拟合】 ​ 受到样本均衡的问题 【假如k=6时,再多选《二次曝光》爱情片,此时3个爱情片,3个喜剧片,结果无法判断】【假如k=7时,又再多选了《谍影重重》动作片,此时3:3:1,也无法判断】 【k值一般选择奇数;3,5,7】 【拓展】 K值选择问题,李航博士的一书「统计学习方法」上所说: 1) 选...

IT之一小佬的博客 7835

微信中调起支付宝支付

微信中调用支付宝支付,首先我们知道微信是不能直接调用支付宝的,所以我们需要使用一个中间页提示用户在浏览器中打开,然后进行网页支付或打开app支付。以下为详细唤起支付宝的步骤、业务代码以及相关页面图。 如有问题欢迎评论留言,看到定回复哦^_^\(^o^)/~ 一、微信中唤起支付宝,有几个步骤: 1、中间页引导用户在浏览器中打开去唤起支付宝。 2、浏览器中打开支付宝或app中打开支付宝。 3...

han_calligrapher的博客 2万+

SAP 货币类型和公司代码的货币设置

货币类型分为公司代码和集团货币,一般FI 10类型和集团货币 30,事务代码是8KEM; 设置货币类型的事务代码是OB22 在S/4 1809版本里编辑功能统合到事务代码FINSC_LEDGER 中了,这里集中了分类账和公司代码的设置; 设置多账簿的币种(会出现在BSEG和FAGLFLEXA表中) 汇率维护在TCURR表中,可通过BAPI_EXCHANGERATE_GETDETAIL函数获取。 CO货币的事务代码是成本控制范围货币:OKKP ,一般设置为货币码20和30; 另外, SCC4设置集团货币,

RichardYang2020的博客 1万+

KNN(k近邻详解)

KNN(k近邻详解) 详细链接一 详细链接二 一句话说明白KNN算法原理 下面我们只讲关于分类的KNN,回归的不讲。 其实很简单,就是计算你要预测的点的周围最近的K个点,然后取这k个点中最多的类定义为你要预测的这个点所属的类型。如下图所示,比如说: 有两类不同的样本数据,分别用蓝色的小正方形和红色的小三角形表示,而图正中间的那个绿色的圆所标示的数据则是待分类的数据。这也就是我们的目的,来了一个新的数据点,我要得到它的类别是什么?好的,下面我们根据k近邻的思想来给绿色圆点进行分类。 1、如果K=3,绿色圆点的

justsolow的博客 3130

产品包装质检实战:基于YOLOv5的智能包装合格检测系统全流程指南

摘要: 针对产品包装质检效率低、漏检率高的问题,本文提出基于YOLOv5的智能检测系统。系统通过采集包装缺陷数据(破损、缺标、封装不良等),利用YOLOv5实现多类别缺陷识别(准确率≥95%),并开发Flask Web界面实现检测可视化与报告生成。实验表明,该系统在30帧/秒的产线速度下可稳定运行,显著提升质检效率。项目涵盖数据标注、模型训练、系统开发全流程,具有工业落地价值,适用于智能制造场景的自动化质检需求。(149字)

LXY_LOVE36的博客 92

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

问题引出之前我们使用K近邻算法尝试寻找用户年龄与预估薪资之间的某种相关性,以及他们是否有购买SUV的决定。主要代码如下:在有一个问题,上面的n_neighbors(k值)为什么是5,其他值可不可以?效果会怎么样?如何知道哪个k值的效果相对较好?这就需要用到交叉验证。交叉验证有什么用,为什么要用它?关于它有什么用,经过浏览相关网页获得了以下两点总结:在数据集很小的时候防止过拟合。找到合适的模型参数。...

weixin_39591455的博客 1358

使用openclaw出现blocked URL fetch (url-fetch) reason=Blocked: resolves to private/internal/special 解决方案

本文主要介绍了使用openclaw出现blocked URL fetch (url-fetch) target=https://news.google.com/search reason=Blocked: resolves to private/internal/special-use IP address 解决方案,希望能对使用xx的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

通用抓取算法AnyGrasp(Graspnet)——本地部署并测试自定义输入数据

背景:GraspNet在数据采集方面,首先将相机固定到机械臂末端,对同一个场景拍摄256个不同的角度,同时场景中的每个物体都会提前采集好3D模型,之后将其投射到仿真环境中,在仿真环境中,对抓取位姿进行打标签,如此完成数据的采集。在运行官方的测试示例时,使用的是路径下的输入数据,可以分析下。color.png(输入):rgb图像(输出):输出的生成抓取位姿的图像depth.png(输入):和当前rgb图像对应的深度图像(保存格式是单通道uint16)meta.mat。

boss-dog 1327

k近邻算法中k值得选择

k值得选择会对k近邻的结果产生重大的影响  如果选择较小的K值,就相当于用较小的邻域中的训练实例进行预测,“学习”的近似误差会减小,只有输入实例较近的训练实例才会对预测结果起作用。但缺点是“学习”的估计误差会增大,预测结果会对近邻实例点非常敏感。如果邻近的实例点恰巧是噪声,预测就会出错。换句话说,k值得减小就意味着整体模型非常复杂,容易发生过拟合  如果选择较大的k值,就相当于用较大邻域中的训

NBW_GX的博客 7683

【图论】系列(一)之图论的构成

图论是研究图的数学分支,本章介绍了图论的基本构成和概念

qq_30066733的博客 748

《机器学习实战》学习笔记(二):k-近邻算法

专栏【机器学习】 【机器学习】《机器学习实战》读书笔记及代码 总目录 https://blog.youkuaiyun.com/TeFuirnever/article/details/99701256 —————————————————————————————————————————————————————— 目录专栏【机器学习】本章内容k-近邻算法概述参考文章 本章内容 k-近邻分类算法 从文本文件中解...

种树最好的时间是10年前,其次是现在!!! 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

学渣也学ML:K-近邻算法之笔记二

再来个案例:约会网站配对效果 书上例出了K-近邻算法的一般流程: 收集数据:可以使用任意方法,此例使用文本文件 准备数据:距离计算所需的数值,最好是结构化的数据格式。 分析数据:可以使用任何方法,此例用Matplotlib画二维扩散图 训练算法:此步骤不适用于K-近邻算法 测试算法:计算错误率。此例使用部分数据作测试样本。 使用算法:首先需要输入样本数据和结构化的输出结果,然后运行K-近邻算法判定...

qq_37320072的博客 238

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

入门机器学习笔记(二)kNN - k近邻学习

(二)k近邻学习基本描述 基本描述 描述: k近邻(kNN)学习是一种常见的监督学习算法 工作机制 给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个 “邻居” 的信息来进行预测 通常,在分类任务中,可以使用 “投票法” ,即选择k个样本的实值输出标记的平均值作为预测结果; 还可以基于距离的远近进行加权平均或加权投票,即距离越近的样本权重越大 惰性学习: 即此类学习技术在训练阶段仅仅是把样本保存起来,训练时间开销为零,待收到测试样本后再进行处理 优点: 天然的可以解决多分类问

SkewedMCC的博客 494

Python《机器学习实战》读书笔记(二)——k-近邻算法

K-近邻算法概述、使用k-近邻算法改进约会网站的配对效果和手写识别系统的示例

waiting-gy的博客 1583

机器学习笔记(二)k近邻算法 kNN、线性回归法 Linear Regression

线性回归法 Linear Regression 1、简单线性回归 寻找一条直线,最大程度的“拟合”样本特征的样本输出标记之间的关系 样本特性只有一个,称为:简单线性回归。 假设我们找到了最佳拟合的直线方程:y=ax+by=ax+by=ax+b,则对于每一个样本点x(i)x^{(i)}x(i),根据我们的直线方程,预测值为:y^(i)=ax(i)+b\hat{y}^{(i)}=ax^{(i)}+by^​(i)=ax(i)+b,真值为:y(i)y^{(i)}y(i)。我们希望y(i)y^{(i)}y(i) 和

qq_45723275的博客 3592

《机器学习实战》读书笔记(二)K-近邻算法(上)(K-近邻算法概述)

前言:本文以及后续《机器学习实战》读书笔记文章将采用主要采用代码测试的形式进行展示,文字内容会偏少,由于每一章均存在实例,为了方便阅读,特将每一个实例分开书写! 2.1K-近邻算法概述 K-近邻算法采用测量不同特征值之间的距离方法进行分类 工作原理:存在一个训练样本集,样本集中每个数据均存在标签,我们知道样本集中每一个数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征...

南梦倾寒的博客 250

机器学习实战笔记:K-means和K-近邻 (二)

k-近邻算法概述 简单的说,k-近邻算法采用测量不同特征值之间的距离方法进行分类,其工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输人没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数...

cv_pyer的博客 606

机器学习笔记(二)k-近邻算法(KNN)

KNN算法的核心思想是如果一个样本在特征空间中的K个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。KNN方法在类别决策时,只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。优点:精度高、对异常值不敏感、无数据输入假定。

Shonllow的博客 953

机器学习实战读书笔记(二) K-近邻算法

K-近邻算法 2.1 K-近邻算法概述 K-近邻算法是一种基本分类与回归方法。本节只讨论分类问题中的K-近邻算法。 K-近邻算法假设给定一个训练数据集,其中的实例类别已定。对新的实例分类时,根据其K个最近邻的训练实例的类别,通过多数表决等方式进行预测。 因此,K-近邻算法不具有显示的学习过程。K-近邻算法实际上利用训练数据集对特征向量空间进行划分,并作为其分类的“模型”。 K值的选择、距

qq_19442771的博客 327

机器学习二(学习笔记) sklearn数据集及K近邻算法(转)

机器学习应用程序的步骤 (1)收集数据 我们可以使用很多方法收集样本护具,如: 公司自有数据 制作网络爬虫从网站上抽取数据、 第三方购买的数据 合作机构提供的数据 从RSS反馈或者API中得到信息、设备发送过来的实测数据。 (2)准备输入数据 得到数据之后,还必须确保数据格式符合要求。 (3)分析输入数据 这一步的主要作用是确保数据集中没有垃圾数据。如果是使用信任的数据来源,那么可以直接跳过这个步...

tzyyy1的博客 2127

python3.5《机器学习实战》学习笔记(二):k近邻算法实战

转载请注明作者和出处:http://blog.youkuaiyun.com/u013829973 系统版本:window 7 (64bit) python版本:python 3.5 IDE:Spyder (一个比较方便的办法是安装anaconda,那么Spyder和jupyter以及python几个常用的包都有了,甚至可以方便的安装TensorFlow等,安装方法链接)实战一:k近邻算法改进约会网站的配

weepon的博客 1921

机器学习笔记--K-近邻算法(二)

使用K-近邻算法改进约会网站的配对效果我的朋友海伦一直使用在线约会网站寻找适合自己的约会对象。 尽管约会网站会推荐不同的 人选,但她没有从中找到喜欢的人。经过一番总结,她发现曾交往过三种类型的人:□ 不喜欢的人□ 魅力一般的人□ 极具魅力的人尽管发现了上述规律, 但海伦依然无法将约会网站推荐的匹配对象归人恰当的分类。她觉得 可以在周一到周五约会那些魅力一般的人,而周末则更喜欢与那些极具魅力的人为

ggwcr的博客 431

机器学习入门读书笔记二(k-近邻算法 kNN) 上

k-近邻算法(kNN)采用测量不同特征值之间的距离方法进行分类 优点:精度高、对异常值不敏感、无数据输入假定。 缺点:计算复杂度高、空间复杂度高。 适用数据范围:数值型和标称型。 工作原理:训练样本集的每条数据包含n个特征值和一个指明所属分类的标签,输入待处理数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,提取k个最相似的数据,k条数据中出现次数最多的分类,即为新数据的推测

小木头的专栏 1289

《机器学习实战》读书笔记(二)K-近邻算法(中)(使用K-近邻算法改进约会网站的配对效果(上))

前言:本文中所有的资源我均已上传到优快云的资源库中(文章中会附上链接),有需要的小伙伴可以帮帮忙,下载一下,毕竟写文章不易,我可以保证,用我所上传的文件在我的电脑绝对能跑通!有不懂的小伙伴可以私聊我哦,基本上每天在线。 本篇文章中所有的资料均放在下载链接中:https://download.youkuaiyun.com/download/qq_38172282/11232025 2.2实例:使用K-近邻...

南梦倾寒的博客 394
上一篇: 概率论复习笔记五——大数定律和中心极限定理
下一篇: 机器学习笔记三——决策树
米法·
博客等级 码龄8年 179粉丝 116原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值