كيفية حساب مسافة مانهاتن في بايثون (مع أمثلة)


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

Σ|أ ط – ب ط |

حيث i هو العنصر الأول لكل متجه.

تُستخدم هذه المسافة لقياس الاختلاف بين ناقلين وتستخدم بشكل شائع في العديد من خوارزميات التعلم الآلي .

يوضح هذا البرنامج التعليمي طريقتين لحساب مسافة مانهاتن بين متجهين في بايثون.

الطريقة الأولى: كتابة دالة مخصصة

يوضح الكود التالي كيفية إنشاء دالة مخصصة لحساب مسافة مانهاتن بين متجهين في بايثون:

 from math import sqrt

#create function to calculate Manhattan distance 
def manhattan(a, b):
    return sum ( abs (val1-val2) for val1, val2 in zip (a,b))
 
#definevectors
A = [2, 4, 4, 6]
B = [5, 5, 7, 8]

#calculate Manhattan distance between vectors
manhattan(A,B)

9

وتبين أن مسافة مانهاتن بين هذين المتجهين هي 9 .

يمكننا التأكد من صحة هذا من خلال حساب المسافة إلى مانهاتن يدويًا بسرعة:

Σ|أ ط – ب ط | = |2-5| + |4-5| + |4-7| + |6-8| = 3 + 1 + 3 + 2 = 9 .

الطريقة الثانية: استخدم وظيفة cityblock()

هناك طريقة أخرى لحساب مسافة مانهاتن بين متجهين وهي استخدام دالة cityblock() من حزمة SciPy:

 from scipy. spatial . distance import cityblock

#definevectors
A = [2, 4, 4, 6]
B = [5, 5, 7, 8]

#calculate Manhattan distance between vectors
cityblock(A, B)

9

مرة أخرى، تبين أن مسافة مانهاتن بين هذين المتجهين هي 9 .

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

 from scipy. spatial . distance import cityblock
import pandas as pd

#define DataFrame
df = pd. DataFrame ({' A ': [2, 4, 4, 6],
                   ' B ': [5, 5, 7, 8],
                   ' C ': [9, 12, 12, 13]})

#calculate Manhattan distance between columns A and B
cityblock(df. A , df. B )

9

مصادر إضافية

كيفية حساب المسافة الإقليدية في بايثون
كيفية حساب مسافة هامينغ في بايثون
كيفية حساب مسافة Levenshtein في بايثون
كيفية حساب المسافة Mahalanobis في بايثون

Add a Comment

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