كيفية استخدام الدالة dist في r (مع أمثلة)


يمكن استخدام الدالة dist() في لغة R لحساب مصفوفة المسافة، والتي تعرض المسافات بين الصفوف في المصفوفة أو إطار البيانات.

تستخدم هذه الوظيفة بناء الجملة الأساسي التالي:

dist(x,method=”الإقليدية”)

ذهب:

  • x: اسم المصفوفة أو كتلة البيانات.
  • الطريقة: قياس المسافة للاستخدام. الإعداد الافتراضي هو “Euclidean”، لكن الخيارات تتضمن “maximum” أو “manhattan” أو “canberra” أو “binary” أو “minkowski”.

توضح الأمثلة التالية كيفية استخدام هذه الوظيفة عمليًا مع إطار البيانات التالي:

 #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 | / | منظمة العفو الدولية | + | بجى |

يوضح الكود التالي كيفية حساب مصفوفة المسافة التي توضح مسافة كانبيرا بين كل صف من المصفوفة في 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() لحساب مسافة Minkowski

يتم حساب مسافة مينكوفسكي بين المتجهين A وB على النحو التالي:

مسافة مينكوفسكي = (Σ|a i – b i | p ) 1/p

حيث 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

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *