使用 SciPy 計算閔科夫斯基距離
閔科夫斯基距離作為歐幾里得和曼哈頓距離的廣義形式,是兩點之間的距離。它主要用於向量的距離相似性。以下是計算 n 維空間中的閔科夫斯基距離的廣義公式 -
$$\mathrm{D= \big[\sum_{i=1}^{n}|r_i-s_i|^p\big]^{1/p}}$$
此處:
si 和 ri 是資料點。
n 表示 n 維空間。
p 表示範數的階數
SciPy 向我們提供了一個名為 minkowski 的函式,用來返回兩點之間的閔科夫斯基距離。讓我們看看如何使用 SciPy 庫計算兩點之間的閔科夫斯基距離 -
示例
# Importing the SciPy library
from scipy.spatial import distance
# Defining the points
A = (1, 2, 3, 4, 5, 6)
B = (7, 8, 9, 10, 11, 12)
A, B
# Computing the Minkowski distance
minkowski_distance = distance.minkowski(A, B, p=3)
print('Minkowski Distance b/w', A, 'and', B, 'is: ', minkowski_distance)輸出
((1, 2, 3, 4, 5, 6), (7, 8, 9, 10, 11, 12)) Minkowski Distance b/w (1, 2, 3, 4, 5, 6) and (7, 8, 9, 10, 11, 12) is: 10 .902723556992836
我們計算了階數 (p) = 3 的閔科夫斯基距離。但是當階數為 2 時,這會表示歐幾里得距離,而階數為 1 時,這會表示曼哈頓距離。讓我們藉助以下示例理解它 -
示例
# Importing the SciPy library
from scipy.spatial import distance
# Defining the points
A = (1, 2, 3, 4, 5, 6)
B = (7, 8, 9, 10, 11, 12)
A, B
# 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,'
Manhattan Distance: ',manhattan_distance)
# 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, '
Euclidean Distance: ',euclidean_distance)輸出
((1, 2, 3, 4, 5, 6), (7, 8, 9, 10, 11, 12)) Minkowski Distance of order(P)1: 36.0 Manhattan Distance: 36 Minkowski Distance of order(P)2: 14.696938456699069 Euclidean Distance: 14.696938456699069
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP