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


Расстояние Минковского между двумя векторами A и B вычисляется как:

(Σ|a i – b i | p ) 1/p

где i — i -й элемент в каждом векторе, а p — целое число.

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

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

d ist(x, method="minkowski", p)

куда:

  • x: числовая матрица или фрейм данных.
  • p: мощность, используемая при вычислении расстояния Минковского.

Обратите внимание, что установка p = 1 эквивалентна вычислению манхэттенского расстояния , а установка p = 2 эквивалентна вычислению евклидова расстояния .

В этом руководстве приведено несколько примеров использования этой функции на практике.

Пример 1. Расстояние Минковского между двумя векторами

В следующем коде показано, как использовать функцию dist() для вычисления расстояния Минковского между двумя векторами в R, используя степень p = 3:

#define two vectors
a <- c(2, 4, 4, 6)
b <- c(5, 5, 7, 8)

#bind the two vectors into a single matrix
mat <- rbind(a, b)

#calculate Minkowski distance between vectors using a power of 3
dist(mat, method=" minkowski", p= 3 )

 a
b 3.979057

Расстояние Минковского (с использованием степени p = 3) между этими двумя векторами оказывается равным 3,979057 .

Пример 2. Расстояние Минковского между векторами в матрице

Чтобы вычислить расстояние Минковского между несколькими векторами в матрице, мы можем использовать аналогичный синтаксис в 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 Minkowski distance between vectors using a power of 3
dist(mat, method = " minkowski", p= 3 )

 a b c
b 3.979057 
c 8.439010 5.142563 
d 3.332222 6.542133 10.614765

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

  • Расстояние Минковского между векторами a и b равно 3,98 .
  • Расстояние Минковского между векторами a и c равно 8,43 .
  • Расстояние Минковского между векторами a и d равно 3,33 .
  • Расстояние Минковского между векторами b и c равно 5,14 .
  • Расстояние Минковского между векторами b и d равно 6,54 .
  • Расстояние Минковского между векторами c и d равно 10,61 .

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

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

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