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


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

Евклидово расстояние = √ Σ(A i -B i ) 2

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

euclidean <- function (a, b) sqrt ( sum ((a - b)^2))

Затем мы можем использовать эту функцию, чтобы найти евклидово расстояние между любыми двумя векторами:

#define two vectors
a <- c(2, 6, 7, 7, 5, 13, 14, 17, 11, 8)
b <- c(3, 5, 5, 3, 7, 12, 13, 19, 22, 7)

#calculate Euclidean distance between vectors
euclidean(a, b)

[1] 12.40967

Евклидово расстояние между двумя векторами оказывается равным 12,40967 .

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

#define data frame
df <- data.frame(a=c(3, 4, 4, 6, 7, 14, 15),
 b=c(4, 8, 8, 9, 14, 13, 7),
 c=c(7, 7, 8, 5, 15, 11, 8),
 d=c(9, 6, 6, 7, 6, 15, 19))

#calculate Euclidean distance between columns *a* and *d*
euclidean(df$a, df$d)

[1] 7.937254

Обратите внимание, что эта функция выдаст предупреждающее сообщение, если два вектора имеют разную длину:

#define two vectors of unequal length
a <- c(2, 6, 7, 7, 5, 13, 14)
b <- c(3, 5, 5, 3, 7, 12, 13, 19, 22, 7)

#attempt to calculate Euclidean distance between vectors
euclidean(a, b)

[1] 23.93742
Warning message:
In a - b : longer object length is not a multiple of shorter object length

Вы можете обратиться к этой странице Википедии, чтобы узнать больше о евклидовом расстоянии.

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

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.