Как рассчитать манхэттенское расстояние в R (с примерами)


Манхэттенское расстояние между двумя векторами, A и B , рассчитывается как:

Σ|а я – б я |

где i — i -й элемент в каждом векторе.

Это расстояние используется для измерения различия между любыми двумя векторами и обычно используется во многих различных алгоритмах машинного обучения .

В этом руководстве приведено несколько примеров того, как рассчитать манхэттенское расстояние в R.

Пример 1: Манхэттенское расстояние между двумя векторами

В следующем коде показано, как создать пользовательскую функцию для вычисления манхэттенского расстояния между двумя векторами в R:

#create function to calculate Manhattan distance
manhattan_dist <- function (a, b){
 dist <- abs (a-b)
 dist <- sum (dist)
 return (dist)
}

#define two vectors
a <- c(2, 4, 4, 6)

b <- c(5, 5, 7, 8)

#calculate Manhattan distance between vectors
manhattan_dist(a, b)

[1] 9

Манхэттенское расстояние между этими двумя векторами оказывается равным 9 .

Мы можем подтвердить это правильно, быстро рассчитав манхэттенское расстояние вручную:

Σ|а я – б я | = |2-5| + |4-5| + |4-7| + |6-8| знак равно 3 + 1 + 3 + 2 = 9 .

Пример 2: Манхэттенское расстояние между векторами в матрице

Чтобы вычислить манхэттенское расстояние между несколькими векторами в матрице, мы можем использовать встроенную функцию dist() в R:

#create four vectors
a <- c(2, 4, 4, 6)

b <- c(5, 5, 7, 8)

c <- c(9, 9, 9, 8)

d <- c(1, 2, 3, 3)

#bind vectors into one matrix
mat <- rbind(a, b, c, d)

#calculate Manhattan distance between each vector in the matrix
dist(mat, method = " manhattan ")

 a b c
b 9 
c 19 10 
d 7 16 26

Способ интерпретации этого вывода следующий:

  • Манхэттенское расстояние между векторами a и b равно 9 .
  • Манхэттенское расстояние между векторами a и c равно 19 .
  • Манхэттенское расстояние между векторами a и d равно 7 .
  • Манхэттенское расстояние между векторами b и c равно 10 .
  • Манхэттенское расстояние между векторами b и d равно 16 .
  • Манхэттенское расстояние между векторами c и d равно 26 .

Обратите внимание, что каждый вектор в матрице должен быть одинаковой длины.

Дополнительные ресурсы

Как рассчитать евклидово расстояние в R
Как рассчитать расстояние Махаланобиса в R
Как рассчитать расстояние Минковского в R