Python でマンハッタンの距離を計算する方法 (例付き)
2 つのベクトルAとBの間のマンハッタン距離は次のように計算されます。
Σ|A i – B i |
ここで、 iは各ベクトルの i番目の要素です。
この距離は 2 つのベクトル間の非類似性を測定するために使用され、多くの機械学習アルゴリズムで一般的に使用されます。
このチュートリアルでは、Python で 2 つのベクトル間のマンハッタン距離を計算する 2 つの方法を示します。
方法 1: カスタム関数を作成する
次のコードは、Python で 2 つのベクトル間のマンハッタン距離を計算するカスタム関数を作成する方法を示しています。
from math import sqrt #create function to calculate Manhattan distance def manhattan(a, b): return sum ( abs (val1-val2) for val1, val2 in zip (a,b)) #definevectors A = [2, 4, 4, 6] B = [5, 5, 7, 8] #calculate Manhattan distance between vectors manhattan(A,B) 9
これら 2 つのベクトル間のマンハッタン距離は9であることがわかります。
マンハッタンまでの距離を手動ですばやく計算することで、これが正しいことを確認できます。
Σ|A i – B i | = |2-5| + |4-5| + |4-7| + |6-8| = 3 + 1 + 3 + 2 = 9 。
方法 2: cityblock() 関数を使用する
2 つのベクトル間のマンハッタン距離を計算する別の方法は、SciPy パッケージのcityblock()関数を使用することです。
from scipy. spatial . distance import cityblock #definevectors A = [2, 4, 4, 6] B = [5, 5, 7, 8] #calculate Manhattan distance between vectors cityblock(A, B) 9
もう一度言いますが、これら 2 つのベクトル間のマンハッタン距離は9であることがわかります。
この関数を使用して、pandas DataFrame の 2 つの列間のマンハッタン距離を見つけることもできることに注意してください。
from scipy. spatial . distance import cityblock import pandas as pd #define DataFrame df = pd. DataFrame ({' A ': [2, 4, 4, 6], ' B ': [5, 5, 7, 8], ' C ': [9, 12, 12, 13]}) #calculate Manhattan distance between columns A and B cityblock(df. A , df. B ) 9
追加リソース
Pythonでユークリッド距離を計算する方法
Python でハミング距離を計算する方法
Python でレーベンシュタイン距離を計算する方法
Python でマハラノビス距離を計算する方法