距离度量方法——欧氏距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离

目录

一、 欧氏距离(Euclidean Distance)

1、简介

2、代码实现

二、曼哈顿距离(Manhattan Distance)

1、简介

2、代码实现

三、切比雪夫距离(Chebyshev Distance)

1、简介

2、代码实现

四、闵可夫斯基距离(Minkowski Distance)

1、简介

2、代码实现


一、 欧氏距离(Euclidean Distance)

1、简介

  • 欧氏距离是最常见的距离度量方法之一。它衡量了两个点之间的直线距离。
  • 在二维空间中,欧氏距离可以用以下公式表示:
  • eq?d%28p%2Cq%29%20%3D%20%5Csqrt%7B%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%28p_i-q_i%29%5E%7B2%7D%7D,其中 p 和 q 是两个点的坐标,n 是维度数量。

2、代码实现

  • 计算两个二维点 eq?p%281%2C2%29 和 eq?q%283%2C4%29 之间的欧氏距离。
  • import math
    
    def euclidean_distance(p, q):
        distance = math.sqrt((p[0] - q[0])**2 + (p[1] - q[1])**2)
        return distance
    
    p = (1, 2)
    q = (3, 4)
    distance = euclidean_distance(p, q)
    print("欧氏距离:", distance)

二、曼哈顿距离(Manhattan Distance)

1、简介

  • 曼哈顿距离是衡量两点之间的城市街道距离,即沿着网格线的距离。
  • 在二维空间中,曼哈顿距离可以用以下公式表示:
    • eq?d%28p%2Cq%29%3D%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%7Cp_i-q_i%7C,其中 p 和 q 是两个点的坐标,n 是维度数量。

2、代码实现

  • 计算两个二维点 eq?p%281%2C2%29 和 eq?q%283%2C4%29 之间的曼哈顿距离。
  • def manhattan_distance(p, q):
        distance = abs(p[0] - q[0]) + abs(p[1] - q[1])
        return distance
    
    p = (1, 2)
    q = (3, 4)
    distance = manhattan_distance(p, q)
    print("曼哈顿距离:", distance)

三、切比雪夫距离(Chebyshev Distance)

1、简介

  • 切比雪夫距离是衡量两个点在各个坐标轴上的最大差值。
  • 在二维空间中,切比雪夫距离可以用以下公式表示:
    • eq?d%28p%2Cq%29%3Dmax_i%28%7Cp_i-q_i%7C%29,其中 p 和 q 是两个点的坐标,n 是维度数量。

2、代码实现

  •  计算两个二维点 eq?p%281%2C2%29 和 eq?q%283%2C4%29 之间的切比雪夫距离。
  • def chebyshev_distance(p, q):
        distance = max(abs(p[0] - q[0]), abs(p[1] - q[1]))
        return distance
    
    p = (1, 2)
    q = (3, 4)
    distance = chebyshev_distance(p, q)
    print("切比雪夫距离:", distance)

四、闵可夫斯基距离(Minkowski Distance)

1、简介

  • 闵可夫斯基距离是欧氏距离和曼哈顿距离的一般化形式。
  • 闵可夫斯基距离可以表示为: 
    • eq?d%28p%2Cq%29%3D%28%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%7Cp_i-q_i%7C%5E%7Br%7D%29%5E%7B%5Cfrac%7B1%7D%7Br%7D%7D,其中 p 和 q 是两个点的坐标,n 是维度数量,r 是一个非负整数。
    • 当 r=1 时,它等同于曼哈顿距离;当 r=2 时,等同于欧氏距离。

2、代码实现

  • 计算两个二维点 eq?p%281%2C2%29 和 eq?q%283%2C4%29 之间的闵可夫斯基距离。
  • def minkowski_distance(p, q, r):
        distance = sum(abs(p[i] - q[i])**r for i in range(len(p)))**(1/r)
        return distance
    
    p = (1, 2)
    q = (3, 4)
    r = 2  # 欧氏距离
    distance = minkowski_distance(p, q, r)
    print("闵可夫斯基距离 (r={}):".format(r), distance)
    
    r = 1  # 曼哈顿距离
    distance = minkowski_distance(p, q, r)
    print("闵可夫斯基距离 (r={}):".format(r), distance)

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恣睢s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值