图解超经典的KNN算法 - 机器学习算法入门

机器学习——K 近邻、K-NN 算法图文详解 K 近邻算法原理、距离度量方法、欧式距离、曼哈顿距离、切比雪夫距离、闵式距离、归一化和标准化、归一化、MinMaxScaler、标准化、StandardScaler、K 值选择问题、GridSearchCV 、分类模型评估方法、留出法、交叉验证法、KFold、分层交叉验证、StratifiedKFold、留一法、自助法、accuracy_score、分类算法评估 阅读详情

图解超经典的KNN算法

本文中介绍的机器学习算法中的一种监督学习的算法:KNN 算法,全称是 K-Nearest Neighbor,中文称之为 K 近邻算法。

它是机器学习可以说是最简单的分类算法之一,同时也是最常用的分类算法之一。在接下来的内容中,将通过以下的几个方面的内容对该算法进行详细的讲解:

1、算法思想

思想

首先对 KNN 算法的思想进行简单的描述:

KNN 算法是一个基本的分类和回归的算法,它是属于监督学习中分类方法的一种。其大致思想表述为:

  1. 给定一个训练集合 M 和一个测试对象 n ,其中该对象是由一个属性值和未知的类别标签组成的向量。

  2. 计算对象 m 和训练集中每个对象之间的距离(一般是欧式距离)或者相似度(一般是余弦相似度),确定最近邻的列表

  3. 将最近邻列表中数量占据最多的类别判给测试对象 z 。

  4. 一般来说,我们只选择训练样本中前 K 个最相似的数据,这便是 k-近邻算法中 k 的出处。

用一句俗语来总结 KNN 算法的思想:物以类聚,人以群分

说明

  • 所谓的监督学习和非监督学习,指的是训练数据是否有类别标签,如果有则是监督学习,否则是非监督学习

  • 在监督学习中,输入变量和输出变量可以连续或者离散的。如果输入输出变量都是连续型变量,则称为回归问题(房价预测);如果输出是离散型变量,则称之为分类问题(判断患者是否属于患病)

  • 在无监督学习中,数据是没有任何标签的,主要是各种聚类算法(以后学习)

2、算法步骤

KNN 算法的步骤非常简单:

  1. 计算未知实例到所有已知实例的距离;

  2. 选择参数 K(下面会具体讲解K值的相关问题)

  3. 根据多数表决( Majority-Voting )规则,将未知实例归类为样本中最多数的类别

3、图解 KNN 算法

K 值影响

下面通过一组图形来解释下 KNN 算法的思想。我们的目的是:判断蓝色的点属于哪个类别

我们通过变化 K 的取值来进行判断。在该算法中K的取值一般是奇数,防止两个类别的个数相同,无法判断对象的类别

K=1、3、5、7…….

  1. 首先如果 K=1:会是什么的情况?

根据图形判断:蓝色图形应该是属于三角形

  1. K=3 的情形

从图中可以看出来:蓝色部分还是属于三角形

  1. K=5 的情形:

此时我们观察到蓝色部分属于正方形了

  1. K=7 的情形:

这个时候蓝色部分又变成了三角形

小结

当 K 取值不同的时候,判别的结果是不同的。所以该算法中K值如何选择将非常重要,因为它会影响到我们最终的结果。

4、K 值选取

交叉验证

上面的一系列图形中已经说明了该算法中K值对结果的影响。那么 K 值到底该如何选择呢?谜底揭晓:交叉验证

K 值一般是通过交叉验证来确定的;经验规则来说,一般 k 是低于训练样本数的平方根。

所谓交叉验证就是通过将原始数据按照一定的比例,比如 6/4 ,拆分成训练数据集和测试数据集,K 值从一个较小的值开始选取,逐渐增大,然后计算整个集合的方差,从而确定一个合适的 K 值。

经过使用交叉验证,我们会得到类似如下的图形,从图形中可以明显的:

  1. 当 K 先不断增大的时候,误差率会先进行降低。因为数据会包含更多的样本可以使用,从而分类效果会更好;

  2. 当 K=10 的附近,出现误差率的变化,建议 K=9 或者 11 ;

  3. 当 K 不断增大的时候,误差率将会不断增加。此时,KNN 算法将会变得没有意义。比如有 50 个样本,当 K 增加到 45 的时候,算法没有意义,几乎使用了全部样本数据,没有体现出最近邻的思想。

K 值过小

k值太小:容易受到噪声点的影响

  • 用较小的邻域中的实例进行预测;

  • 近似误差减小,估计误差增大;

  • 预测结果对近邻的实例点非常敏感;如果近邻点恰好是噪声,预测出错。

K 值过大

k 值太大:分类太多,太细,导致包含太多其他类别的点

  • 用较大的邻域中的实例点进行预测;

  • 减少学习的估计误差,但是近似误差增大;

  • 与输入实例较远的点的训练实例也会起预测作用;

  • k 值增大意味着整个模型变得简单。

5、距离问题

常见距离

在上面的算法原理中提到,需要计算测试对象和训练集合中每个对象距离。在机器学习中,两个对象之间的距离包含:

常用的距离有以下几种:

  • 欧式距离

  • 曼哈顿距离

  • 切比雪夫距离

  • 闵可夫斯基距离

  • 标准欧式距离

  • 马氏距离

  • 汉明距离

  • 夹角余弦

  • 杰卡德相似系数

在 KNN 算法中我们一般采用的是欧式距离(常用)或者曼哈顿距离

欧式距离

N维空间的距离:

当 n=2 时候,称之为欧式距离:

其中 X 称之为到原点的欧式距离

曼哈顿距离

曼哈顿距离是闵可夫斯基距离的一种特殊情形。闵可夫斯基距离指的是:

当 p=2,变成欧式距离;

当 p=1,变成曼哈顿距离;

当 p 区域无穷,变成切比雪夫距离;

6、算法优缺点

优点

  1. 简单易用,而且非常容易弄懂基本原理,KNN 算法可以说是机器算法中最简单易懂的算法。即使初学者没有太多的基础,相信也能明白它的原理。

  2. 算法是惰性的,模型训练时间快。KNN 算法没有明确的数据训练过程,或者说它根本不需要进行数据的训练,直接可以对测试对象进行判断。

  3. 适合用于多分类问题(对象具有多个标签)。

缺点

  1. 对计算机的内存要求高:因为它存储了整个训练数据,性能较低

  2. 算法的可解释差,对结果不能给出一定的解释规则

什么时候使用 KNN 算法?scikit-learn 官方中的一张图给出了一个答案:

7、KNN算法实现

下面通过一个简单的算法来实现 KNN 算法,主要步骤为:

  1. 创建数据集合和标签

  2. 利用欧式距离,使用 KNN 算法进行分类

    1. 计算欧式距离

    2. 距离的排序(从大到小)

    3. 统计 K 个样本中出现次数多的,归属于该类别

作者简介

Peter,硕士毕业僧一枚,从电子专业自学Python入门数据行业,擅长数据分析及可视化。喜欢数据,坚持跑步,热爱阅读,乐观生活。个人格言:不浮于世,不负于己

个人站点:www.renpeter.cn,欢迎常来小屋逛逛


文末福利

各位猿们,还在为记不住API发愁吗,哈哈哈,最近发现了国外大师整理了一份Python代码速查表和Pycharm快捷键sheet,火爆国外,这里分享给大家。

这个是一份Python代码速查表

下面的宝藏图片是2张(windows && Mac)高清的PyCharm快捷键一览图

怎样获取呢?可以添加我们的AI派团队的程序媛姐姐

一定要备注【高清图】哦

????????????????????

➕我们的程序媛小姐姐微信要记得备注【高清图】哦

K-近邻算法(KNN)原理分析和代码实战 K-近邻算法,全称为K-nearest neighbor,简称KNN。它是一个原理非常简单,但是计算复杂度比较高的一个分类算法,接下来,我们先从原理出发,再进行源代码的解析。 阅读详情

相关推荐

图解机器学习算法 | 从入门到精通系列教程(机器学习通关指南·完结)

本篇内容是ShowMeAI组织的「图解机器学习算法」系列教程入口,本教程尽量以生动可视化的方式,帮助大家理解机器学习的核心知识和重要的系列模型,并配以相关的代码实现帮助大家了解应用方法。(对机器学习实战感兴趣的同学,可以关注ShowMeAI的另外一个系列[机器学习应用实践])......

ShowMeAI研究中心 1万+

knn聚类还是分类_KNN 和K-means

一、KNN  KNN是一种分类算法,它不具有显式的学习过程。对应的输入是特征空间的点,输出为实例的类别,可以是多类别。1.算法思路  如果一个样本在特征空间中的k个最邻近的样本中的大多数属于某一个类别,则该样本也划分为这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。举例说明如下:  我们要确定绿点属于哪个颜...

weixin_39780784的博客 3267

三天爆肝快速入门机器学习:KNN算法、朴素贝叶斯算法、决策树【第二天】

三天爆肝快速入门机器学习【第二天】转换器与预估器KNN算法决策树随机森林个人总结 转换器与预估器 必须理解的转换器与估计器 一转化器 回想一下之前做的特征工程的步骤? 实例化(实例化的是一个转换器类transformer) 调用fit_transform(对于文档建立分类词频矩阵,不能同时调用) 我们把特征工程的接口称为转换器,其中转换器调用有如下几种形式.(我们以标准化为例,分析如下三种调用形式的区别. fit_transform fit 计算每列的平均值与标准差 transform 进行最终的标准化 f

weixin_56957149的博客 1757

【机器学习入门】图解超经典的KNN算法

出品:Python数据之道(ID:PyDataLab)作者:Peter,来自读者投稿编辑:Lemon图解超经典的KNN算法本文中介绍的机器学习算法中的一种监督学习的算法:KNN 算法,全...

fengdu78的博客 2243

机器学习-有监督学习-分类算法:k-近邻(KNN)算法【多分类】【使用场景: 小数据场景/小样本学习,几千~几万样本】【使用faiss库实现快速计算KNN】

K-近邻算法(KNN)概念 >**k-近邻算法**:如果一个样本在特征空间中的**k个最相似(即特征空间中最邻近)的样本中的大多数**属于某一个类别,则该样本也属于这个类别。 >相似的样本,同一特征的值应该是相近的。 >k的取值会影响结果。 >就是通过你的"邻居"来判断你属于哪个类别。 >如何计算你到你的"邻居"的距离:一般时候,都是使用欧氏距离 计算k-近邻距离公式:两个样本的距离可以通过如下公式计算,又叫**欧式距离**。需要事先对数据进行标准化处理。

u013250861的博客 2621

图解超经典的KNN算法

本文中介绍的机器学习算法中的一种KNN算法,全称是,中文称之为K近邻算法。它是机器学习可以说是最简单的分类算法之一,同时也是最常用的分类算法之一。

weixin_70923796的博客 682

knn聚类还是分类_【机器学习入门】图解超经典的KNN算法

出品:Python数据之道(ID:PyDataLab)作者:Peter,来自读者投稿编辑:Lemon图解超经典的KNN算法本文中介绍的机器学习算法中的一种监督学习的算法:KNN 算法,全称是 K-Nearest Neighbor,中文称之为 K 近邻算法。它是机器学习可以说是最简单的分类算法之一,同时也是最常用的分类算法之一。在接下来的内容中,将通过以下的几个方面的内容对该算法进行详细的...

weixin_39830175的博客 768

Vue3项目实战:集成h265webjs打造高性能Web端H.265播放器

本文详细介绍了如何在Vue3项目中集成h265webjs库,构建高性能的Web端H.265播放器。通过封装播放器管理模块、利用Vue3组合式API优雅管理生命周期,并提供了从环境准备、核心集成到进阶优化的完整实战指南,有效解决了浏览器原生不支持H.265解码的难题,显著降低视频流带宽占用。

weixin_29016833的博客 365

机器学习十大经典算法—KNN(最近邻)

机器学习十大经典算法—KNN(最近邻) K-近邻算法原理K最近邻(kNN,k-NearestNeighbor)分类算法,见名思意:找到最近的k个邻居(样本),在前k个样本中选择频率最高的类别作为预测类别。

1024Michael的博客 3万+

软件破解逆向安全(一)初识内存地址和偏移

工具:CE 内存:数字->存访在电脑中->内存 实例:如何修改植物大战僵尸阳光 内存搜索最核心:过滤数据 先用CE加载植物大战僵尸,如下图 我们可以看到目前我们的阳光数是50,我们尝试在ce里搜索精确数值,4 byte是int整数的表示。 我们发现有很多数据,尝试收集一个阳光变成75再次搜索: 我们发现就一个了,这时我们可以双击Value随便修改阳光的数值了。 这里我们说一下动态和静态地址 动态地址:临时用于存放数据的地址,黑色。特征:重新启动游戏地..

weixin_43781139的博客 2597

飞塔防火墙CVE-2022-40684漏洞复现:手把手教你搭建靶场环境(附调试技巧)

本文详细指导如何搭建Fortinet飞塔防火墙CVE-2022-40684认证绕过漏洞的靶场环境,涵盖虚拟机部署、网络配置、调试模式开启及漏洞原理分析。通过手把手教程,读者可掌握漏洞复现与深度调试技巧,深入理解该认证绕过漏洞的利用与防御。

h6i7j8的博客 695

【机器学习】-K近邻算法(KNN)

(1)计算已知类别数据集中的点与当前点之间的距离;(2)按照距离递增次序排序;(3)选取与当前点距离最小的k个点;(4)确定前k个点所在类别的出现频率;(5)返回前k个点出现频率最高的类别作为当前点的预测分类。

knoci的博客 3079

InTouch历史报警与操作记录高效查询控件V4.0实战指南(一键下载即用)

本文详细介绍了InTouch历史报警与操作记录高效查询控件V4.0的实战应用。该控件针对原生AlmDbViewCtrl控件的查询效率低下、功能单一等问题,提供了智能查询、可视化统计、视图定制和一键导出Excel等强大功能,旨在帮助工程师快速处理海量历史数据,大幅提升工控运维效率。

g9h0i1的博客 960

图解十大经典机器学习算法入门

弱人工智能近几年取得了重大突破,悄然间,已经成为每个人生活中必不可少的一部分。以我们的智能手机为例,看看到底温藏着多少人工智能的神奇魔术。 下图是一部典型的智能手机上安装的一些常见应用程序,可能很多人都猜不到,人工智能技术已经是手机上很多应用程序的核心驱动力。 图1 智能手机上的相关应用 传统的机器学习算法包括决策树、聚类、贝叶斯分类、支持向量机、EM、Adaboost等等。这篇文章将对

jrunw的博客 22万+

Palantir的Ontology:从静态知识图谱到动态业务引擎的跃迁

本文探讨了Palantir的Ontology技术如何将静态知识图谱升级为动态业务引擎。通过引入函数和行动作为核心元素,Ontology实现了业务逻辑的自动化响应与执行,显著提升物流、能源等领域的运营效率。文章详细解析了其混合存储引擎、状态监听网络等关键技术设计,并对比展示了传统架构与Ontology架构的业务价值差异。

weixin_42570296的博客 203

SAP 中租赁资产的实现需区分经营租赁与融资租赁,核心围绕资产主数据配置、折旧与利息设置、科目分配及业务操作展开

摘要:SAP系统租赁资产管理需区分经营租赁与融资租赁,通过SPRO配置资产主数据、折旧范围、利息计算及科目分配。关键步骤包括:激活折旧范围利息计算(OABZ)、设置租赁资产类别(OAYZ)、维护总账科目(AO90)及创建租赁资产主数据(AS01)。业务操作涵盖资产资本化(ABZON)、折旧利息过账(AFAB)、租金支付(F-53)及终止处理(ABUMN)。核心配置要点在于准确设置租赁类型、利率参数和科目联动,确保系统自动计算折旧与利息并生成正确凭证。

金牌架构师 1076

图解机器学习算法(3) | KNN算法及其应用(机器学习通关指南·完结)

KNN算法(K近邻算法)是一种很朴实的机器学习方法,既可以做分类,也可以做回归。本文详细讲解KNN算法相关的知识,包括:核心思想、算法步骤、核心要素、缺点与改进等。

ShowMeAI研究中心 1万+

【Dify】PPT生成工具应用

本文介绍了一款自动化PPT生成工具,通过智能接口将文本内容高效转化为结构化演示文档。该系统采用三阶段工作流(内容输入、HTTP请求上传、文件输出),无需复杂操作即可生成专业PPT。工具适用于教学课件、产品发布、企业培训等场景,能显著提升内容表达效率,特别适合初学者快速制作演示材料。文章详细说明了核心节点、应用场景及开发资源,为文本到PPT的自动化转换提供了实用解决方案。

Mr数据杨 1221

图解机器学习 | KNN算法及其应用

假如一套房子打算出租,但不知道市场价格,可以根据房子的规格(面积、房间数量、厕所数量、容纳人数等),在已有数据集中查找相似(K近邻)规格的房子价格,看别人的相同或相似户型租了多少钱。分类过程:已知的数据集中,每个已出租住房都有房间数量、厕所数量、容纳人数等字段,并有对应出租价格。将预计出租房子数据与数据集中每条记录比较计算欧式距离,取出距离最小的5条记录,将其价格取平均值,可以将其看做预计出租房子的市场平均价格。最好不要将所有数据全部拿来测试,需要分出训练集和测试集,具体划分比例按数据集确定。

weixin_42907150的博客 1186

通信原理 | 随机数仿真 | 均匀、正态、双高斯、瑞利、莱斯、对数正态、nakagami、Suzuki分布的随机数仿真(matlab)

信道建模在通信系统设计和分析中扮演着至关重要的角色。它指的是使用数学和物理模型来描述和模拟无线或有线通信路径中的信号传播特性。

若北辰 1988

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

机器学习KNN算法入门---鸢尾花分类

KNN算法 (K-Nearest Neighbor)也叫K-近邻算法是机器学习中最基础的算法之一。是监督学习中的分类算法,也可以用于回归问题的解决,但是通常使用它来解决分类问题。所以我们今天主要探讨的就是KNN算法解决分类问题.KNN算法的优点:精度高、对异常值不敏感、无数据输入假定。KNN算法的缺点: 缺点:时间复杂度高、空间复杂度高。本文主要简单入门了一下 KNN算法思想: 传入一个未知分类的样本, 找到 k 个和它最相似的样本, 这K个样本多数属于哪一类,那么这个未知样本就属于哪一类型.

weixin_53433040的博客 2115

蓝牙模块HM-10手册

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

【学习】《算法图解》第十二章学习笔记:K近邻算法

尽管KNN算法有计算复杂度高、存储开销大等缺点,但其简单直观的特性使其成为机器学习入门的理想算法,也是实际应用中的重要工具之一。例如,如果一个特征的取值范围是0-1,另一个特征的取值范围是0-1000,那么第二个特征将在距离计算中占据主导地位。《算法图解》通过生动的例子和清晰的解释,帮助读者理解了KNN算法的基本原理和应用方法,为进一步学习更复杂的机器学习算法奠定了基础。在《算法图解》中,作者强调了归一化的重要性,并建议在实际应用中始终对特征进行适当的归一化处理。

一个普通程序员的成长记录簿 1028

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

机器学习入门及基本算法图解

基本算法 最近在学习神经网络,整理了一些算法,写出来给自己一点交代吧,本人刚入算法没多久,如果有不对的地方,请指出来大家一起学习,谢谢。 费曼算法(Feynman algorithm) 将这个算法放在最前面是因为该算法提供了一些我们思考问题的方法,根据吉德林法则:把问题清楚的写下来,就已经解决了一半!很多时候我们不知道怎么去解决问题,可以通过下面的三步来一步一步实施。这个算法是以著名物理学家理查德...

DYyunzhongxian的博客 1487

机器学习-04-分类算法-03KNN算法

本系列是机器学习课程的系列课程,主要介绍机器学习中分类算法,本篇为分类算法与knn算法部分。

IT从业者的成长历程 1612

机器学习 kNN 算法之图解 kd 树

???? 本文收录于Github仓库,欢迎前来 star 呀~ https://github.com/Veal98/CS-Wiki ????‍ 在线阅读地址/更好的阅读体验请移步:https://veal98.gitee.io/cs-wiki/ 4. k 近邻算法的实现 2:kd 树 ① 概述 实现 k 近邻算法时,主要考虑的问题就是如何对训练数据进行快速 k 近邻搜索。 k 近邻法最简单的实现方法是线性扫描 linear scan,这需要计算输入实例与其他每个训练实例的距离,在训练集很大的时候,这

小牛肉的博客 933
上一篇: 解读:一种基于CNN-LSTM混合神经网络的股价预测模型
下一篇: 使用AMP和Tensor Cores得到更快速,更节省内存的PyTorch模型
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值