Манхэттенское расстояние между двумя векторами, A и B , рассчитывается как:
Σ|А я – В я |
где i — i -й элемент в каждом векторе.
Это расстояние используется для измерения различия между двумя векторами и обычно используется во многих алгоритмах машинного обучения .
В этом руководстве показаны два способа вычисления манхэттенского расстояния между двумя векторами в Python.
Способ 1: напишите пользовательскую функцию
В следующем коде показано, как создать пользовательскую функцию для вычисления манхэттенского расстояния между двумя векторами в Python:
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))
#define vectors
A = [2, 4, 4, 6]
B = [5, 5, 7, 8]
#calculate Manhattan distance between vectors
manhattan(A, B)
9
Манхэттенское расстояние между этими двумя векторами оказывается равным 9 .
Мы можем подтвердить это правильно, быстро рассчитав манхэттенское расстояние вручную:
Σ|А я – В я | = |2-5| + |4-5| + |4-7| + |6-8| знак равно 3 + 1 + 3 + 2 = 9 .
Способ 2: используйте функцию cityblock()
Другой способ рассчитать манхэттенское расстояние между двумя векторами — использовать функцию cityblock() из пакета SciPy:
from scipy. spatial.distance import cityblock
#define vectors
A = [2, 4, 4, 6]
B = [5, 5, 7, 8]
#calculate Manhattan distance between vectors
cityblock(A, B)
9
Снова манхэттенское расстояние между этими двумя векторами оказывается равным 9 .
Обратите внимание, что мы также можем использовать эту функцию, чтобы найти манхэттенское расстояние между двумя столбцами в кадре данных pandas:
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