Як використовувати функцію dist у r (з прикладами)


Функцію dist() у R можна використовувати для обчислення матриці відстані, яка відображає відстані між рядками в матриці або кадрі даних.

Ця функція використовує такий базовий синтаксис:

dist(x, method=”Euclidean”)

золото:

  • x: назва матриці або блоку даних.
  • Метод: вимірювання відстані для використання. За замовчуванням встановлено «Евклідове», але параметри включають «максимум», «манхеттен», «канберра», «двійковий» або «мінковський».

У наведених нижче прикладах показано, як використовувати цю функцію на практиці з таким кадром даних:

 #define 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)

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

#view matrix
mast

  [,1] [,2] [,3] [,4]
a 2 4 4 6
b 5 5 7 8
c 9 9 9 8
d 1 2 3 3

Приклад 1: використовуйте dist() для обчислення евклідової відстані

Евклідова відстань між двома векторами A і B обчислюється наступним чином:

Евклідова відстань = √ Σ(A i -B i ) 2

Наступний код показує, як обчислити матрицю відстані, яка показує евклідову відстань між кожним рядком матриці в R:

 #calculate Euclidean distance between each row in matrix
dist(mat)

          ABC
b4.795832                    
c 10.148892 6.000000          
d 3.872983 8.124038 13.190906

Ось як інтерпретувати результат:

  • Евклідова відстань між прямими a і b дорівнює 4,795832 .
  • Евклідова відстань між прямими a і c дорівнює 10,148892 .
  • Евклідова відстань між прямою a і d дорівнює 3,872983 .
  • Евклідова відстань між прямою b і прямою c дорівнює 6,000000 .
  • Евклідова відстань між прямою b і d дорівнює 8,124038 .
  • Евклідова відстань між прямою c і d дорівнює 13,190906 .

Приклад 2: використовуйте dist() для обчислення максимальної відстані

Максимальна відстань між двома векторами, A і B, обчислюється як максимальна різниця між усіма попарними елементами.

Наступний код показує, як обчислити матрицю відстані, яка відображає максимальну відстань між кожним рядком матриці в R:

 #calculate Maximum distance between each row in matrix
dist(mat, method=" maximum ")

  ABC
b 3    
c 7 4  
d 3 5 8

Приклад 3: Використовуйте dist(), щоб обчислити відстань від Канберри

Відстань Канберра між двома векторами A і B обчислюється наступним чином:

Відстань від Канберри = Σ |A i -B i | / | ШІ | + | Bje |

Наступний код показує, як обчислити матрицю відстані, яка показує відстань Канберра між кожним рядком матриці в R:

 #calculate Canberra distance between each row in matrix
dist(mat, method=" canberra ")

          ABC
b 0.9552670                    
c 1.5484515 0.6964286          
d 1.1428571 1.9497835 2.3909091

Приклад 4: використовуйте dist() для обчислення двійкової відстані

Двійкова відстань між двома векторами, A і B, обчислюється як частка елементів, спільних для двох векторів.

Наступний код показує, як обчислити матрицю відстані, яка показує двійкову відстань між кожним рядком матриці в R:

 #calculate Binary distance between each row in matrix
dist(mat, method=" binary ")

  ABC
b 0    
c 0 0  
d 0 0 0

Приклад 5: використовуйте dist() для обчислення відстані Мінковського

Відстань Мінковського між двома векторами A і B обчислюється наступним чином:

Відстань Мінковського = (Σ|a i – b i | p ) 1/p

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

Наступний код показує, як обчислити матрицю відстані, яка показує відстань Мінковського (використовуючи p=3) між кожним рядком матриці в R:

 #calculate Minkowski distance between each row in matrix
dist(mat, method=" minkowski ", p= 3 )

          ABC
b 3.979057                    
c 8.439010 5.142563          
d 3.332222 6.542133 10.614765

Додаткові ресурси

Як обчислити подібність Жаккара в R
Як обчислити подібність косинуса в R
Як обчислити скалярний добуток у R

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *