机器学习1:k 近邻算法

k近邻算法(k-Nearest Neighbors, k-NN)是一种常用的分类和回归算法。它基于一个简单的假设:如果一个样本的k个最近邻居中大多数属于某一类别,那么该样本也很可能属于这个类别。

k近邻算法的步骤如下

  1. 输入:训练集(包含已知类别的样本)和待分类样本。
  2. 计算待分类样本与训练集中所有样本之间的距离(常用的距离度量方法包括欧氏距离、曼哈顿距离等)。
  3. 选择距离待分类样本最近的k个样本作为邻居。
  4. 根据这k个邻居的类别标签,确定待分类样本的类别:如果有多数样本属于A类,那么待分类样本也归为A类;如果多数样本属于B类,那么待分类样本则归为B类。
  5. 输出:待分类样本的类别。

k近邻算法的主要特点包括:

  • 简单易实现:算法主要基于距离计算和多数表决,概念和原理较直观。
  • 非参数化学习:算法不对数据的分布做任何假设,因此适用于各种类型的数据。
  • 适应性强:算法可以根据具体问题和数据特点选择合适的距离度量方法和邻居个数k。

在实际应用中,可以通过交叉验证等方法选择合适的k值和距离度量方法,以获得更好的分类效果。k近邻算法被广泛应用于模式识别、图像处理、推荐系统等领域。

欧氏距离(Euclidean Distance)是指在数学上计算两个点之间的距离的一种方法。对于二维平面上的两个点,它是通过计算这两个点的坐标差的平方和的平方根得到的。

假设有两个点A(x1, y1)和B(x2, y2),欧氏距离的计算公式如下:

d = sqrt((x2 - x1)^2 + (y2 - y1)^2)

其中,sqrt表示平方根,^ 表示乘方操作。

欧氏距离的特点是:

  • 能够度量空间中两点之间的直线距离。
  • 距离越小,表示两点越接近;距离越大,表示两点越远离。
  • 欧氏距离可以应用于任意维度的数据,不仅仅局限于二维平面。

在机器学习和模式识别等领域,欧氏距离常用于聚类、分类以及特征匹配等任务中,通过比较样本之间的距离来进行相似性度量或分类判定。

曼哈顿距离(Manhattan Distance),也称为城市街区距离或L1距离,是计算两个点之间的距离的一种度量方法。它得名于曼哈顿的城市规划布局,因为在曼哈顿城市街区中,要从一个十字路口到达另一个十字路口,只能沿着网格状的街道走,而不能直线穿越建筑物。

对于二维平面上的两个点A(x1, y1)和B(x2, y2),曼哈顿距离的计算公式如下:

d = |x2 - x1| + |y2 - y1|

其中 |x| 表示取 x 的绝对值。

曼哈顿距离的特点是:

  • 它衡量的是沿着网格状路径从一个点到另一个点所需的步数。
  • 曼哈顿距离忽略了直线距离,而关注了水平和垂直方向上的距离差异。
  • 曼哈顿距离适用于需要考虑路径限制的问题,比如机器人导航、城市交通等领域。

曼哈顿距离不仅可以应用于二维平面,还可以推广到更高维的情况。在机器学习和数据挖掘领域,曼哈顿距离常用于聚类、分类和特征选择等任务中,用于衡量样本之间的相似性或者特征之间的差异。

举例:假设有一个二维坐标系,点A的坐标是(1, 3),点B的坐标是(4, 6)。现在我们要计算点A和点B之间的曼哈顿距离。

曼哈顿距离的计算公式是:d = |x2 - x1| + |y2 - y1|

根据这个公式,我们可以计算出点A和点B之间的曼哈顿距离为:

d = |4 - 1| + |6 - 3| = 3 + 3 = 6

       这意味着,从点A移动到点B,沿着水平和垂直方向上的总移动步数是6。可以把曼哈顿距离看作是通过直角路径从一个点到达另一个点所需的最小步数。

       将这个理解为在一个城市的街道上行走,曼哈顿距离衡量的是你只能沿着街道走的情况下,从一个地点到另一个地点所需的最短距离。在这个例子中,我们需要向右移动3个单位,向上移动3个单位,即水平方向上的距离差为3,垂直方向上的距离差为3,总步数为6。

棋盘距离(Chebyshev Distance),也称为切比雪夫距离或L∞距离,是计算两个点之间的距离的一种度量方法。它得名于俄罗斯数学家切比雪夫,他首先引入了这个概念。

对于二维平面上的两个点A(x1, y1)和B(x2, y2),

棋盘距离的计算公式如下:d = max(|x2 - x1|, |y2 - y1|)

其中 |x| 表示取 x 的绝对值。

棋盘距离的特点是:

  • 它衡量的是沿着网格状路径从一个点到另一个点所需的最少步数。
  • 棋盘距离忽略了直线距离,而只考虑水平和垂直方向上的距离差异。
  • 棋盘距离适用于仅允许水平、垂直和对角行走的问题,比如在棋盘上移动、机器人导航等领域。

棋盘距离不仅可以应用于二维平面,还可以推广到更高维的情况。在图像处理、路径规划、聚类等领域,棋盘距离常用于衡量像素之间的差异、计算路径的最短距离,或者作为一种距离度量方法进行数据分析和模式识别。

假设我们有一个5x5的棋盘,棋盘上的每个格子表示一个点。现在我们要计算点A(2, 3)和点B(4, 1)之间的棋盘距离。

首先,我们可以通过观察两个点在棋盘上的位置,发现它们可以通过沿着网格状路径移动到达:

在这个路径中,我们可以看到我们需要向右移动两步,向下移动两步,即水平方向上的距离差为2,垂直方向上的距离差也为2。

根据棋盘距离的计算公式 d = max(|x2 - x1|, |y2 - y1|),我们可以取水平方向和垂直方向上距离差的最大值作为最终的棋盘距离。在这个例子中,最大值是2,所以点A和点B之间的棋盘距离就是2。

这个例子展示了棋盘距离的特点,它只考虑水平和垂直方向上的距离差异,并忽略了直线距离。在这个例子中,虽然两点之间的直线距离是√10≈3.16,但棋盘距离只计算了步数,即2步。

综合作业课后题

1. 假设有以下训练数据集,每个样本有两个特征(x1, x2)和对应的类别标签

(y):

现在给定一个测试样本 (6, 4),使用 k 近邻算法进行分类,其中 k=5。请

计算该测试样本的类别。

1) 请简述 k 近邻算法的算法步骤

2) 现在给定一个测试样本 (6, 4),使用 k 近邻算法进行分类,其中 k=5。

分别使用欧氏距离、曼哈顿距离和棋盘距离来计算测试样本与训练样本

之间的距离,并观察它们对最终分类结果的影响。

  1. k近邻算法的步骤如下:
  • 计算测试样本与训练数据集中所有样本之间的距离
  • 选择k个距离最近的样本,即为k个邻居
  • 根据这k个邻居的类别标签,确定测试样本的类别:如果有多数样本属于A类,那么测试样本也归为A类;如果多数样本属于B类,那么测试样本则归为B类。

2.计算方法及分类结果如下:

  • 使用欧氏距离来计算距离:

  • 样本1:sqrt((3-6)^2 + (5-4)^2) ≈ 3.16,A类

  • 样本2:sqrt((4-6)^2 + (2-4)^2) ≈ 2.83,A类

  • 样本3:sqrt((7-6)^2 + (3-4)^2) ≈ 1.41,B类

  • 样本4:sqrt((9-6)^2 + (6-4)^2) ≈ 3.61,B类

  • 样本5:sqrt((5-6)^2 + (8-4)^2) ≈ 4.12,A类

  • 样本6:sqrt((2-6)^2 + (6-4)^2) ≈ 4.47,B类

  • 从上面的分类结果可以看出,欧氏距离将测试样本分类成了A类。

  • 使用曼哈顿距离来计算距离:

  • 样本1:|3-6| + |5-4| = 4,A类

  • 样本2:|4-6| + |2-4| = 4,A类

  • 样本3:|7-6| + |3-4| = 2,B类

  • 样本4:|9-6| + |6-4| = 5,B类

  • 样本5:|5-6| + |8-4| = 5,A类

  • 样本6:|2-6| + |6-4| = 4,B类

  • 从上面的分类结果可以看出,曼哈顿距离将测试样本分类成了A类。

  • 使用棋盘距离来计算距离:

  • 样本1:max(|3-6|, |5-4|) = 3,A类

  • 样本2:max(|4-6|, |2-4|) = 2,A类

  • 样本3:max(|7-6|, |3-4|) = 1,B类

  • 样本4:max(|9-6|, |6-4|) = 3,B类

  • 样本5:max(|5-6|, |8-4|) = 4,A类

  • 样本6:max(|2-6|, |6-4|) = 4,B类

  • 从上面的分类结果可以看出,棋盘距离也将测试样本分类成了A类。

  • 综上所述,使用这三种距离计算方式,最终测试样本都被归类为A类。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/100813.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM第二讲:JVM 基础 - 字节码详解

JVM 基础 - 字节码详解 本文是JVM第二讲,JVM 基础-字节码详解。源代码通过编译器编译为字节码,再通过类加载子系统进行加载到JVM中运行。 文章目录 JVM 基础 - 字节码详解1、多语言编译为字节码在JVM运行2、Java字节码文件2.1、Class文件的结构属性2.2、…

Linux shell编程学习笔记10:expr命令 和 算术运算

Linux Shell 脚本编程和其他编程语言一样,支持算数、关系、布尔、字符串、文件测试等多种运算。上节我们研究了 Linux shell编程 中的 字符串运算,今天我们研究 Linux shell编程的算术运算 ,为了方便举例,我们同时对expr命令进行…

TomCat关键技术

一、Tomcat 是什么 Tomcat 是一个 HTTP 服务器。通过前面的学习,我们知道HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式,同时也通过 ajax 和 Java Socket 分别构造了 HTTP 客户端。HTTP 服务器我们也同样可以通过 Java Socket 来实现. 而 Tomcat 就是基于 J…

hive add columns 后查询不到新字段数据的问题

分区表add columns 查询不到新增字段数据的问题; 5.1元数据管理 (1)基本架构 Hive的2个重要组件:hiveService2 和metastore,一个负责转成MR进行执行,一个负责元数据服务管理 beeline-->hiveService2/spar…

优思学院|八大浪费深度剖析

在工作流程中消除浪费是精益思想的目标。在深入探讨八大浪费之前,了解浪费的定义至关重要。浪费是指工作流程中的任何行动或步骤,这些行动或步骤不为客户增加价值。换句话说,浪费是客户不愿意为其付费的任何过程。 最初的七大浪费&#xff0…

竞赛选题 深度学习 python opencv 火焰检测识别

文章目录 0 前言1 基于YOLO的火焰检测与识别2 课题背景3 卷积神经网络3.1 卷积层3.2 池化层3.3 激活函数:3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV54.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 数据集准备5.1 数…

KdMapper扩展实现之SOKNO S.R.L(speedfan.sys)

1.背景 KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考《【转载】利用签名驱动漏洞加载未签名驱动》)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。 2.驱动信息 驱动名称spee…

Excel恢复科学技术法显示的数据

Excel中输入位数较大的数据时,软件会自动使用科学计数法显示。很多时候并不需要这样的计数格式,所以需要把它转变为普通的数字格式 操作方法 选中单元格/列/行》右键》设置单元格式 在打开的窗口中,切换到“数字”选项卡,点击“自…

引领创新浪潮:“Polygon探寻新技术、新治理、新代币的未来之路!“

熊市是用来建设的,Polygon Labs一直在利用这漫长的几个月来做到这一点。 Polygon 是最常用的区块链之一,每周约有 150 万用户,每天超过 230 万笔交易,以及数千个 DApp,Polygon 最近面临着日益激烈的竞争。虽然从交易数…

BUUCTF [BJDCTF2020]JustRE 1

查看文件信息 使用IDA打开 shift F12搜索字符串 发现类似flag的字符串 点进去 一路跟踪到汇编窗口,然后F5 sprintf将格式化后的字符串输出到String中 最终String的值为 printf("BJD{%d%d2069a45792d233ac}",19999,0);也就是 BJD{1999902069a45792d…

【解决问题思路分析】记录hutool默认使用服务端上次返回cookie的问题解决思路

背景: 本服务需要调用第三方接口获取数据,首先调用public-key接口获取公钥,然后用公钥加密密码,将用户名和密码传入/ticket接口,获取Cookie和response body中的token。 排查思路 由于是调用第三方接口出现问题&…

Typora for Mac:优雅的Markdown文本编辑器,提升你的写作体验

Typora是一款强大的Markdown文本编辑器,专为Mac用户设计。无论你是写作爱好者,还是专业作家或博客作者,Typora都能为你提供无与伦比的写作体验。 1. 直观的界面设计 Typora的界面简洁明了,让你专注于写作,而不是被复…

BC v1.2充电规范

1 JEITA Reference to https://www.mianbaoban.cn/blog/post/169964 符合 JEITA 规范的锂离子电池充电器解决方案 2 Battery Fuel Gauge 2.1 Cycle Count(充放电循环次数) 此指令回传一只读字段,代表电芯组已经历的完整充放电循环数。当放电容…

【力扣】单调栈:901. 股票价格跨度

【力扣】单调栈:901. 股票价格跨度 文章目录 【力扣】单调栈:901. 股票价格跨度1. 题目介绍2. 思路3. 解题代码参考 1. 题目介绍 设计一个算法收集某些股票的每日报价,并返回该股票当日价格的 跨度 。 当日股票价格的 跨度 被定义为股票价格…

PicGo+Gitee+Typora搭建云图床

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全栈,…

数据结构 堆——详细动画图解,形象理解

作者主页 📚lovewold少个r博客主页 ​➡️栈和队列博客传送门 🌳参天大树充满生命力,其根深叶茂,分枝扶疏,为我们展示了数据分治的生动形态 目录 🌳 树 树的常见概念 📒树的表示 二叉树 一…

探索乡村新风貌:VR全景记录乡村发展,助力乡村振兴

引言: 中国乡村正经历着巨大变革,长期以来,乡村地区一直面临着人口外流、资源匮乏等问题。然而,近年来,政府的政策支持以及新兴技术的崭露头角,如虚拟现实(VR)全景记录,…

随着 ChatGPT 凭借 GPT-4V(ision) 获得关注,多模态 AI 不断发展

原创 | 文 BFT机器人 在不断努力让人工智能更像人类的过程中,OpenAI的GPT模型不断突破界限GPT-4现在能够接受文本和图像的提示。 生成式人工智能中的多模态表示模型根据输入生成文本、图像或音频等各种输出的能力。这些模型经过特定数据的训练,学习底层模…

【photoshop学习】用 Photoshop 做的 15 件创意事

用 Photoshop 做的 15 件创意事 每个人总是谈论 Photoshop 的无限可能。您可以使用该程序做很多事情,列表几乎是无穷无尽的。 嘿,我是卡拉!如果您花过一些时间使用 在线ps,您可能见过我(并且注意到我提到了这一点&am…

WPF向Avalonia迁移(四、其他事项)

开发必备 1. Avalonia项目源代码!!!!!!!!!!没有源代码,你连控件的背景色怎么改都找不着!! 2.下载你所使用的版本&#x…