【机器学习】数学知识:欧式距离(Euclidean Distance)和曼哈顿距离(Manhattan Distance)
欧式距离和曼哈顿距离是两种常用的距离度量方法,用于衡量两点之间的相似性或差异性。它们在几何分析、数据挖掘、机器学习等领域有广泛应用。
1. 欧式距离
概念
欧式距离(Euclidean Distance)是最常见的直线距离度量方法,源于欧几里得几何学。它表示两点之间的直线距离,类似于二维或三维空间中两点间的最短路径。
公式
在 n-维空间中,给定两点 和
,欧式距离公式为:
欧式距离的发现
欧式距离的起源可以追溯到古希腊数学家欧几里得(Euclid,约公元前300年),其在著作《几何原本》(Elements)中系统化了几何学的基础知识。
欧式几何定义了空间中点与点之间的最短距离,即“直线距离”,由此衍生出欧式距离的概念。
-
基本原理:勾股定理 欧式距离公式源于勾股定理:在直角三角形中,斜边的平方等于两直角边的平方和。
推广到 n-维空间,给定两点
和
,距离公式扩展为:
-
主要特点 欧式距离定义了连续空间中两点之间的“几何距离”,强调的是全局最短路径。这一概念与自然界中的最短路径问题高度吻合。
经典应用案例
- 聚类分析:例如 K-Means 聚类算法使用欧式距离衡量样本点与聚类中心的距离。
- 图像处理:计算图像像素值的差异。
2. 曼哈顿距离
概念
曼哈顿距离(Manhattan Distance)也称为“城市街区距离”或“L1 距离”,表示两点之间的路径长度,假设只能沿水平和垂直方向移动,类似于网格状街道上的步行距离。
公式
在 n-维空间中,给定两点 和
,曼哈顿距离公式为:
曼哈顿距离的发现
曼哈顿距离的概念起源于网格化城市模型的研究,最初应用于街道规划和城市交通问题。名字来源于美国纽约的曼哈顿区,该区域的街道呈现规则的网格状布局。
-
基本思想 在曼哈顿街道中,车辆或行人通常沿着水平和垂直方向移动,因此实际距离是路径上水平方向和竖直方向的距离之和,而非欧式距离的直线距离。
-
数学化描述 对于二维空间中两点
和
,其曼哈顿距离定义为:
推广到 n-维空间,计算每一维的绝对差值并累加即可,公式为:
-
主要特点 曼哈顿距离描述了离散空间或网格系统中最短路径,适合用于模拟实际城市中路径优化和步行距离等问题。
经典应用案例
- 推荐系统:衡量用户偏好之间的距离。
- 路径规划:模拟城市中的最短步行距离。
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. 比较与总结
| 特性 | 欧式距离 | 曼哈顿距离 |
|---|---|---|
| 移动方式 | 直线 | 垂直+水平 |
| 应用场景 | 连续数据、物理距离 | 离散数据、网格路径 |
| 计算复杂度 | 二次方和开平方计算 | 绝对值和累加 |
| 优点 | 更适合度量几何意义 | 简单计算,鲁棒性强 |
欧式距离更适合分析连续空间中的距离,而曼哈顿距离更适合离散或网格化的场景。根据应用需求选择合适的度量方式尤为重要。
相关文章:
【机器学习】数学知识:欧式距离(Euclidean Distance)和曼哈顿距离(Manhattan Distance)
欧式距离和曼哈顿距离是两种常用的距离度量方法,用于衡量两点之间的相似性或差异性。它们在几何分析、数据挖掘、机器学习等领域有广泛应用。 1. 欧式距离 概念 欧式距离(Euclidean Distance)是最常见的直线距离度量方法,源于欧…...
Redis 概 述 和 安 装
安 装 r e d i s: 1. 下 载 r e dis h t t p s : / / d o w n l o a d . r e d i s . i o / r e l e a s e s / 2. 将 redis 安装包拷贝到 /opt/ 目录 3. 解压 tar -zvxf redis-6.2.1.tar.gz 4. 安装gcc yum install gcc 5. 进入目录 cd redis-6.2.1 6. 编译 make …...
数据仓库面试题集离线实时
一、Flink面试问题集 1、flinkkafka 如何保证精准一次 配置两阶段提交 2、Flink提交方式, 使用pre-job还是yarn-session模式,以及Application模式,好处? Flink提交模式模式对比 3、Flink UV统计实现 set布隆过滤器redis 有误…...
Spring Boot框架:电商系统的技术革新
4 系统设计 网上商城系统的设计方案比如功能框架的设计,比如数据库的设计的好坏也就决定了该系统在开发层面是否高效,以及在系统维护层面是否容易维护和升级,因为在系统实现阶段是需要考虑用户的所有需求,要是在设计阶段没有经过全…...
一键抠图:免费安全的在线图片去除背景工具
利用前端技术,轻松去除图片背景 得益于Webassembly技术的快速发展,前端可以实现的功能越来越多。本文将介绍一款基于briaai的 RMBG-1.4型号的 预训练模型实现的在线图片去除背景(抠图)工具。地址:https://www.potatotools.top/toolsEntrance…...
vue项目PC端和移动端实现在线预览pptx文件
通过PPTXjs插件,实现PPTX文件在线预览,需下载PPTXjs,将其引入HTML页面,并编写相应的HTML和JS代码,如果是移动端还需调整div大小,这是一种便捷的前端PPTX转HTML技术,适合网页展示使用 PPTX在线预览,使用jquery的插件《PPTXjs》,纯前端实现pptx转html进行…...
uniapp适配暗黑模式配置plus.nativeUI.setUIStyle适配DarkMode配置
uniapp适配暗黑模式配置 目录 uniapp适配暗黑模式配置setUIStyleDarkMode 适配app-plus manifest.json配置theme.json配置pages.json配置页面切换代码实现同步手机暗黑配置额外适配 参考官方文档:https://uniapp.dcloud.net.cn/tutorial/darkmode.html 主要用到api…...
EXCEL 或 WPS 列下划线转驼峰
使用场景: 需要将下划线转驼峰,直接在excel或wps中第一行使用公式,然后快速刷整个列格式即可。全列工下划线转为格式,使用效果如下: 操作步骤: 第一步:在需要显示驼峰的一列,复制以…...
走进Linux的历史发展史
目录 前言 Linux的发展史 UNIX发展的历史 Linux发展历史 开源 企业应用现状 Linux在服务器领域的发展 桌面领域 移动嵌入式领域 云计算/大数据领域 发行版 编辑 Linux环境搭建方式 前言 本节博客内容较水,主要介绍Linux的发展历史和其相关的学习内容&a…...
学习yum工具,进行安装软件
目录 1.Linux 软件包管理器 yum 什么是软件包 2.Linux下安装软件的方案 3.Linux软件生态 Linux下载软件的过程(Ubuntu、Centos、other) 操作系统的好坏评估--- ⽣态问题 为什么会有⼈免费特定社区提供软件,还发布?还提供云服…...
union介绍及使用
union格式 在C中,union是一种特殊的数据类型,它允许在相同的内存位置存储不同的数据类型,但在任意时刻只能使用一个成员。以下是union类型的基本格式说明: union UnionName {memberType1 memberName1;memberType2 memberName2;m…...
安全,服务器证书和SSL连接
业务报错: javax.net.ssl.SSLPeerUnverifiedException: Certificate for <10.5.20.137> doesn’t match any of the subject alternative names: [*.dt.zte.com.cn] at org.apache.http.conn.ssl.SSLConnectionSocketFactory.verifyHostname(SSLConnectionSoc…...
Java结合ElasticSearch根据查询关键字,高亮显示全文数据。
由于es高亮显示机制的问题。当全文内容过多,且搜索中标又少时,就会出现高亮结果无法覆盖全文。因此需要根据需求手动替换。 1.根据es的ik分词器获取搜索词的分词结果。 es部分: //中文分词解析 post /_analyze {"analyzer":"…...
Design Compiler:Topographical Workshop Lab2
相关阅读 Design Compilerhttps://blog.csdn.net/weixin_45791458/category_12738116.html?spm1001.2014.3001.5482 本文是对Synopsys Design Compiler Topographical/Graphical Workshop Lab Guide中Lab2的翻译,Lab文件可以从以下链接获取。 Synopsys Design Co…...
【C语言】连接陷阱探秘(1):声明与定义
目录 一、声明与定义的混淆 1.1. 声明(Declaration) 1.2. 定义(Definition) 1.3. 避免混淆的方法 1.4. 示例 二、声明与定义不匹配 2.1. 常见的不匹配情况 2.2. 解决方法 三、外部变量与静态变量的命名冲突 3.1. 外部变量命名冲突 3.2. 静态变量命名冲突 四、缺…...
ChatGPT学术专用版,一键润色纠错+中英互译+批量翻译PDF
ChatGPT academic项目是由中科院团队基于ChatGPT专属定制。论文润色、语法检查、中英互译、代码解释等可一键搞定,堪称科研神器。 功能介绍 我们以3.5版本为例,ChatGPT学术版总共分为五个区域:输入控制区、输出对话区、基础功能区、函数插件…...
python isinstance(True, int)
今天的bug 是布尔类型给的。 >>> a True >>> isinstance(a, int) True>>> a True >>> isinstance(a, bool) TruePython中的布尔类型(bool)实际上是整数类型(int)的一个子类,…...
1.5寸**进口 128128带灰阶oled屏 spi串口 老王电子diy 设备 OLED 2024/11/15 arduino
名:1.5寸**进口 128128带灰阶oled屏 协:spi串口 铺:老王电子diy 设备: OLED 时间:2024/11/15 IDE: arduino 兜兜转转还是打通了,他的接口 用的i2c 标志 夭寿咯 MOSI(Master Out Slave In):主机输出,从机输入。MISOÿ…...
【EasyExcel】复杂导出操作-自定义颜色样式等(版本3.1.x)
文章目录 前言一、自定义拦截器二、自定义操作1.自定义颜色2.合并单元格 三、复杂操作示例1.实体(使用了注解式样式):2.自定义拦截器3.代码4.最终效果 前言 本文简单介绍阿里的EasyExcel的复杂导出操作,包括自定义样式,根据数据合并单元格等。…...
机器学习 ---线性回归
目录 摘要: 一、简单线性回归与多元线性回归 1、简单线性回归 2、多元线性回归 3、残差 二、线性回归的正规方程解 1、线性回归训练流程 2、线性回归的正规方程解 (1)适用场景 (2)正规方程解的公式 三、衡量…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
