【机器学习】数学知识:欧式距离(Euclidean Distance)和曼哈顿距离(Manhattan Distance)

欧式距离和曼哈顿距离是两种常用的距离度量方法,用于衡量两点之间的相似性或差异性。它们在几何分析、数据挖掘、机器学习等领域有广泛应用。

1. 欧式距离

概念

欧式距离(Euclidean Distance)是最常见的直线距离度量方法,源于欧几里得几何学。它表示两点之间的直线距离,类似于二维或三维空间中两点间的最短路径。

公式

在 n-维空间中,给定两点 P = (x_1, x_2, ..., x_n)Q = (y_1, y_2, ..., y_n),欧式距离公式为:

d(P, Q) = \sqrt{\sum_{i=1}^n (x_i - y_i)^2}

欧式距离的发现

欧式距离的起源可以追溯到古希腊数学家欧几里得(Euclid,约公元前300年),其在著作《几何原本》(Elements)中系统化了几何学的基础知识。
欧式几何定义了空间中点与点之间的最短距离,即“直线距离”,由此衍生出欧式距离的概念。

  • 基本原理:勾股定理 欧式距离公式源于勾股定理:在直角三角形中,斜边的平方等于两直角边的平方和。

    c^2 = a^2 + b^2 \quad \implies \quad c = \sqrt{a^2 + b^2}

    推广到 n-维空间,给定两点 P = (x_1, x_2, ..., x_n) 和 Q = (y_1, y_2, ..., y_n),距离公式扩展为:

    d(P, Q) = \sqrt{\sum_{i=1}^n (x_i - y_i)^2}
  • 主要特点 欧式距离定义了连续空间中两点之间的“几何距离”,强调的是全局最短路径。这一概念与自然界中的最短路径问题高度吻合。

经典应用案例

  1. 聚类分析:例如 K-Means 聚类算法使用欧式距离衡量样本点与聚类中心的距离。
  2. 图像处理:计算图像像素值的差异。

2. 曼哈顿距离

概念

曼哈顿距离(Manhattan Distance)也称为“城市街区距离”或“L1 距离”,表示两点之间的路径长度,假设只能沿水平和垂直方向移动,类似于网格状街道上的步行距离。

公式

在 n-维空间中,给定两点P = (x_1, x_2, ..., x_n)Q = (y_1, y_2, ..., y_n),曼哈顿距离公式为:

d(P, Q) = \sum_{i=1}^n |x_i - y_i|

曼哈顿距离的发现

曼哈顿距离的概念起源于网格化城市模型的研究,最初应用于街道规划和城市交通问题。名字来源于美国纽约的曼哈顿区,该区域的街道呈现规则的网格状布局。

  • 基本思想 在曼哈顿街道中,车辆或行人通常沿着水平和垂直方向移动,因此实际距离是路径上水平方向和竖直方向的距离之和,而非欧式距离的直线距离。

  • 数学化描述 对于二维空间中两点 P = (x_1, y_1)Q = (x_2, y_2),其曼哈顿距离定义为:

    d(P, Q) = |x_1 - x_2| + |y_1 - y_2|

    推广到 n-维空间,计算每一维的绝对差值并累加即可,公式为:

    d(P, Q) = \sum_{i=1}^n |x_i - y_i|
  • 主要特点 曼哈顿距离描述了离散空间或网格系统中最短路径,适合用于模拟实际城市中路径优化和步行距离等问题。

经典应用案例

  1. 推荐系统:衡量用户偏好之间的距离。
  2. 路径规划:模拟城市中的最短步行距离。

3. Python 实现及图例

以下代码对欧式距离和曼哈顿距离进行计算,并通过图形化展示两种距离的差异。

代码示例

import numpy as np
import matplotlib.pyplot as plt# 定义两点
P = np.array([1, 2])
Q = np.array([4, 6])# 计算欧式距离
euclidean_distance = np.sqrt(np.sum((P - Q) ** 2))# 计算曼哈顿距离
manhattan_distance = np.sum(np.abs(P - Q))# 打印结果
print(f"欧式距离: {euclidean_distance}")
print(f"曼哈顿距离: {manhattan_distance}")# 图示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize=(8, 6))
plt.scatter(P[0], P[1], color='blue', label='Point P (1, 2)')
plt.scatter(Q[0], Q[1], color='red', label='Point Q (4, 6)')
plt.plot([P[0], Q[0]], [P[1], Q[1]], color='green', linestyle='--', label='Euclidean Path')# 曼哈顿路径
plt.plot([P[0], Q[0]], [P[1], P[1]], color='orange', linestyle='-', label='Manhattan Path')
plt.plot([Q[0], Q[0]], [P[1], Q[1]], color='orange', linestyle='-')# 坐标轴与图例
plt.axhline(0, color='black', linewidth=0.5)
plt.axvline(0, color='black', linewidth=0.5)
plt.xlim(0, 7)
plt.ylim(0, 7)
plt.grid()
plt.title("欧式距离与曼哈顿距离")
plt.legend()
plt.show()
欧式距离: 5.0
曼哈顿距离: 7

运行结果

  • 欧式距离:从 P 到 Q 的最短直线路径,图中为绿色虚线。
  • 曼哈顿距离:从 P 到 Q 沿水平和垂直移动的路径,图中为橙色折线。

4. 比较与总结

特性欧式距离曼哈顿距离
移动方式直线垂直+水平
应用场景连续数据、物理距离离散数据、网格路径
计算复杂度二次方和开平方计算绝对值和累加
优点更适合度量几何意义简单计算,鲁棒性强

欧式距离更适合分析连续空间中的距离,而曼哈顿距离更适合离散或网格化的场景。根据应用需求选择合适的度量方式尤为重要。

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

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

相关文章

hydra基础知识

hydra基础知识 1、yaml的使用 1.1 基础介绍 主要是用来写配置文件 优势: 层级式可以写注释安装: pip install pyyaml1.2 语法 2、omegaconf 2.1 基础介绍 为什么需要omegaconf? omegaconf主要是对python原生的字典,列表类型的增强,通过omegaconf能够更好的处理yaml…

递归(3)----力扣40组合数2,力扣473火柴拼正方形

给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 示例 1: 输入: candidates [10,1,2,7,6,1…

RPC-健康检测机制

什么是健康检测? 在真实环境中服务提供方是以一个集群的方式提供服务,这对于服务调用方来说,就是一个接口会有多个服务提供方同时提供服务,调用方在每次发起请求的时候都可以拿到一个可用的连接。 健康检测,能帮助从连…

Android WMS概览

WMS(WindowManagerService)是 Android 系统的核心服务,负责管理应用和系统的窗口,包括窗口的创建、销毁、布局、层级管理、输入事件分发以及动画显示等。它通过协调 InputManager 和 SurfaceFlinger 实现触摸事件处理和窗口渲染&a…

4.STM32之通信接口《精讲》之USART通信---实验串口发送程序

本节将进行实战,基础了解请查看第1,2,3节(Whappy) 开始背!! USART ---》全双工 异步/同步 点对点 C语言基础printf用法,这节将用到printf的重定向,来打印到串口助手上…

Kotlin return与return@forEachIndexed

Kotlin return与returnforEachIndexed fun main() {val data arrayOf(0, 1, 2, 3, 4)println("a")data.forEachIndexed { index, v ->if (v 2) {//类似while循环中的continue//跳过,继续下一个forEachIndexed迭代returnforEachIndexed}println("…

Cherno OpenGL(28 ~ 33)

批量渲染-介绍 在这里我们将在一个drawcall打包多个几何体。即 batch geometry。 我们在这里将聚焦于2d渲染,我们如何渲染一堆2d的quads或者说rectangles呢? 一种情况是比如一个2d游戏有很多个tile组成,要去渲染这些tile;另一种…

缺失值异常值的处理导入数据插值拟合工具箱

文章目录 1.构造数据2.缺失值的处理3.异常值的处理4.导入数据的注意事项5.插值拟合工具箱使用 1.构造数据 下面的这个就是生成这个正态分布的数据,这个时候我们的这个数据里面是没有这个异常的数据的,因此这个时候我们可以自己创造这个异常的数据&#…

FPGA开发流程

注:开发板:小梅哥的ACX720。本实验可直接运行在小梅哥的ACX720开发板上,后续的实验都可直接运行在小梅哥的ACX720上。 一、打开VIVADO并创建工程 1、双击VIVADO图标,打开vivado。 2、打开vivado界面打,点击有 Create …

知识库管理系统:企业数字化转型的加速器

在数字化转型的大潮中,知识库管理系统(KBMS)已成为企业提升效率和创新能力的关键工具。本文将探讨知识库管理系统的定义、企业建立知识库的必要性,以及如何快速搭建企业知识库。 知识库管理系统是什么? 知识库管理系统…

.NET桌面应用架构Demo与实战|WPF+MVVM+EFCore+IOC+DI+Code First+AutoMapper

目录 .NET桌面应用架构Demo与实战|WPFMVVMEFCoreIOCDICode FirstAutoPapper技术栈简述项目地址:功能展示项目结构项目引用1. 新建模型2. Data层,依赖EF Core,实现数据库增删改查3. Bussiness层,实现具体的业务逻辑4. Service层&am…

ReactPress vs VuePress vs RectPress

ReactPress:重塑内容管理的未来 在当今数字化时代,内容管理系统(CMS)已成为各类网站和应用的核心组成部分。ReactPress作为一款融合了现代Web开发多项先进技术的开源发布平台,正以其卓越的性能、灵活性和可扩展性&…

为以人工智能为中心的工作负载重新设计的全局控制台

MinIO 控制台多年来一直是一个不断发展的产品。每次学习时,我们都会思考如何改进交互框架中这个非常重要的部分。首先是控制台,它在推出后的一年内就被广泛采用。更具体地说,超过 10K 个组织。接下来是企业控制台。这从对象存储与其 GUI 之间…

Django5 2024全栈开发指南(三):数据库模型与ORM操作

目录 一、模型的定义二、数据迁移三、数据表关系四、数据表操作4.1 Shell工具4.2 数据新增4.3 数据修改4.4 数据删除4.5 数据查询4.6 多表查询4.7 执行SQL语句4.8 数据库事务 Django 对各种数据库提供了很好的支持,包括 PostgreSQL、MySQL、SQLite 和 Oracle&#x…

Java通过calcite实时读取kafka中的数据

引入maven依赖 <dependency> <groupId>org.apache.calcite</groupId> <artifactId>calcite-kafka</artifactId> <version>1.28.0</version> </dependency> 测试代码 import java.sql.Connection; import java.sql.DriverMan…

RDIFramework.NET CS敏捷开发框架 V6.1发布(.NET6+、Framework双引擎、全网唯一)

RDIFramework.NET C/S敏捷开发框架V6.1版本迎来重大更新与调整&#xff0c;全面重新设计业务逻辑代码&#xff0c;代码量减少一半以上&#xff0c;开发更加高效。全系统引入全新字体图标&#xff0c;整个界面焕然一新。底层引入最易上手的ORM框架SqlSugar&#xff0c;让开发更加…

TypeORM在Node.js中的高级应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 TypeORM在Node.js中的高级应用 TypeORM在Node.js中的高级应用 TypeORM在Node.js中的高级应用 引言 TypeORM 基本概念 1. 实体&am…

11.15组会汇报

概述 不经意传输协议,也叫茫然传输协议,是一种保护隐私的两方通信协议,消息发送者持有两条待发送的消息,接收者选择一条进行接收,事后发送者对接收者获取哪一条消息毫不知情,接收者对于未选择的消息也无法获取任何信息。即1-out-of-2 OT。在OT协议中,发送方拥有全部的数据权限,…

通过华为鲲鹏认证发行上市的集成平台产品推荐

华为鲲鹏认证是技术实力与品质的权威象征&#xff0c;代表着产品达到了高标准的要求。从技术层面看&#xff0c;认证确保产品与华为鲲鹏架构深度融合&#xff0c;能充分释放鲲鹏芯片的高性能、低功耗优势&#xff0c;为集成平台的高效运行提供强大动力。在安全方面&#xff0c;…

基于ARM+FPGA的电力通信管理机IEC61850规约通信机的实现

本章通过对比传统的通信管理机方案对需要支持多RS485端口的不足之处&#xff0c; 以及在进行海量数据处理时的性能瓶颈&#xff0c;本文使用Intel全新的Cyclone V SoC FPGA芯片&#xff0c;充分发挥FPGA的高速并行运算特性以及现场可配置优势&#xff0c;并且结合 ARM处理器的…