写在前面:
首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。
路虽远,行则将至;事虽难,做则必成。只要有愚公移山的志气、滴水穿石的毅力,脚踏实地,埋头苦干,积跬步以至千里,就一定能够把宏伟目标变为美好现实。
“相似性度量(similarity measurement)”系列文章:、
【数据挖掘】机器学习中相似性度量方法-欧式距离
【数据挖掘】机器学习中相似性度量方法-余弦相似度
Hello,大家好。
继续更新"相似性度量(similarity measurement)"系列文章,今天介绍的是曼哈顿距离。多的不说,少的不唠,下面开始今天的教程。
以下内容,完全是我根据参考资料和个人理解撰写出来的,不存在滥用原创的问题。
1、曼哈顿距离
曼哈顿距离(Manhattan Distance),也被称为出租车几何或城市街区距离,是一种在几何度量空间中衡量两点之间距离的方法,由19世纪的数学家赫尔曼·闵可夫斯基提出。
曼哈顿距离的命名源自纽约曼哈顿的城市网格布局,因为在曼哈顿,由于街道大多呈网格状分布,车辆只能沿横向或纵向的街道行驶,不能直接穿越街区,所以从一个地点到另一个地点的实际最短行车距离就是这两点在南北方向上的距离加上在东西方向上的距离。
下图中红线表示欧式距离,蓝线表示曼哈顿距离。
2、计算公式
2.1 二维平面
二维平面两个点A(
x
1
,
y
1
x_ 1, y_ 1
x1,y1)和B(
x
2
,
y
2
x_ 2, y_ 2
x2,y2)之间的曼哈顿距离:
d
(
A
,
B
)
=
∣
x
1
−
x
2
∣
+
∣
y
1
−
y
2
∣
\ d(A,B) = |x_1 - x_2| + |y_1 - y_2|
d(A,B)=∣x1−x2∣+∣y1−y2∣
2.2 三维空间
三维空间两个点A( x 1 , y 1 , z 1 x_ 1,y_ 1, z_ 1 x1,y1,z1)和B( x 2 , y 2 , z 2 x_ 2,y_ 2, z_ 2 x2,y2,z2)之间的曼哈顿距离:
d ( A , B ) = ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ + ∣ z 1 − z 2 ∣ \ d(A,B) = |x_1 - x_2| + |y_1 - y_2| + |z_1 - z_2| d(A,B)=∣x1−x2∣+∣y1−y2∣+∣z1−z2∣
2.3 高维空间
两个向量A( x 1 , x 2 , x 3 , . . . , x n x_ 1,x_ 2, x_ 3, ..., x_ n x1,x2,x3,...,xn)和B( y 1 , y 2 , y 3 , . . . , y n y_ 1,y_ 2, y_ 3,..., y_ n y1,y2,y3,...,yn)之间的曼哈顿距离:
d ( A , B ) = ∑ i = 1 n ∣ x i − y i ∣ \ d(A,B) = \sum_{i=1}^{n}{\left| x_{i}-y_{i} \right|} d(A,B)=i=1∑n∣xi−yi∣
3、代码实现
编写代码实现曼哈顿距离,下面是Python代码:
# -*- coding: utf-8 -*-
"""
Created on Sun Jun 16 22:19:04 2024
@author: AIexplore微信公众号
"""
def manhattan_distance(point1, point2):
"""
计算两个n维点之间的曼哈顿距离。
参数:
point1: 第一个点,类型为tuple或list,如(1, 2, 3)
point2: 第二个点,类型与point1相同,维度需要与point1匹配
返回:
曼哈顿距离,类型为int或float
"""
# 确保两个点的维度相同
if len(point1) != len(point2):
raise ValueError("两个点的维度不匹配")
# 计算曼哈顿距离
distance = sum(abs(a - b) for a, b in zip(point1, point2))
return distance
# data
point_a = (1, 2, 3)
point_b = (4, 5, 6)
print("曼哈顿距离:", manhattan_distance(point_a, point_b))
输出结果:
曼哈顿距离: 9
4、应用场景
- 城市规划与导航:曼哈顿距离的概念源自城市网格布局,因此在城市交通规划、路径规划软件(如导航系统)中用来估算沿道路网格的最短行驶距离。
- 物流与运输:在物流配送、货物分拣等领域,曼哈顿距离有助于优化仓库内部的货品摆放和路径选择,减少移动距离和时间。
- 图像处理与计算机视觉:在图像分割、特征匹配等任务中,曼哈顿距离可以用来度量像素或特征点之间的相似性,帮助识别和分析图像内容。
当然,曼哈顿距离还可以应用到机器学习与数据挖掘、医学影像处理、游戏开发、自然语言处理等领域。
参考文章
[1]https://blog.csdn.net/weixin_35757704/article/details/115437768
[2]https://mp.weixin.qq.com/s/g1-U59Xo7ScjscyrL61Ujw
写在最后
作者介绍:CSDN人工智能领域优质创作者,CSDN博客专家,阿里云专家博主,阿里云技术博主,有机器学习、深度学习、OCR识别项目4年以上工作经验,专注于人工智能技术领域。会根据实际项目不定期输出一些非商业的技术,内容不限,欢迎各位朋友关注。
1、关注下方公众号,让我们共同进步。
2、需要技术指导、交流合作,点击"关于我-与我联系"添加微信交流。
都看到这里了,动动发财的小手点个赞再走吧。