闵可夫斯基距离是欧几里得距离和曼哈顿距离的广义形式,是两点之间的距离。它主要用于向量的距离相似性。
SciPy 为我们提供了一个名为 minkowski 的函数,该函数返回两点之间的 Minkowski 距离。让我们看看如何使用 SciPy 库计算两点之间的 Minkowski 距离 -
# Importing the SciPy library fromscipy.spatialimport distance # Defining the points A = (1, 2, 3, 4, 5, 6) B = (7, 8, 9, 10, 11, 12) print(A, B)输出结果
((1, 2, 3, 4, 5, 6), (7, 8, 9, 10, 11, 12))
# Importing the SciPy library fromscipy.spatialimport distance # Defining the points A = (1, 2, 3, 4, 5, 6) B = (7, 8, 9, 10, 11, 12)
# Computing the Minkowski distance minkowski_distance = distance.minkowski(A, B, p=3) print('Minkowski Distance b/w', A, 'and', B, 'is: ', minkowski_distance)输出结果
Minkowski Distance b/w (1, 2, 3, 4, 5, 6) and (7, 8, 9, 10, 11, 12) is: 10.902723556992836
我们已经用order(p)= 3计算了闵可夫斯基距离。但是当阶数为 2 时,它将代表欧几里得距离,而当阶数为 1 时,它将代表曼哈顿距离。让我们用下面给出的例子来理解它 -
# Importing the SciPy library fromscipy.spatialimport distance # Defining the points A = (1, 2, 3, 4, 5, 6) B = (7, 8, 9, 10, 11, 12) A, B输出结果
((1, 2, 3, 4, 5, 6), (7, 8, 9, 10, 11, 12))
# minkowski and manhattan distance minkowski_distance_with_order1 = distance.minkowski(A, B, p=1) print('Minkowski Distance of order(P)1:',minkowski_distance_with_order1, '\nManhattan Distance: ',manhattan_distance)输出结果
Minkowski Distance of order(P)1: 36.0 Manhattan Distance: 36
# minkowski and euclidean distance minkowski_distance_with_order2 = distance.minkowski(A, B, p=2) print('Minkowski Distance of order(P)2:',minkowski_distance_order_2, '\nEuclidean Distance: ',euclidean_distance)输出结果
Minkowski Distance of order(P)2: 14.696938456699069 Euclidean Distance: 14.696938456699069