วิธีการคำนวณระยะทางแมนฮัตตันใน python (พร้อมตัวอย่าง)


ระยะห่างของแมนฮัตตัน ระหว่างเวกเตอร์สองตัว A และ B คำนวณได้ดังนี้:

Σ|A ฉัน – B ฉัน |

โดยที่ i คือองค์ประกอบที่ i ของเวกเตอร์แต่ละตัว

ระยะนี้ใช้เพื่อวัดความแตกต่างระหว่างเวกเตอร์สองตัว และมักใช้ใน อัลกอริทึมการเรียนรู้ของเครื่อง หลายๆ ตัว

บทช่วยสอนนี้แสดงสองวิธีในการคำนวณระยะห่างของแมนฮัตตันระหว่างเวกเตอร์สองตัวใน Python

วิธีที่ 1: เขียนฟังก์ชันแบบกำหนดเอง

รหัสต่อไปนี้แสดงวิธีสร้างฟังก์ชันแบบกำหนดเองเพื่อคำนวณระยะห่างของแมนฮัตตันระหว่างเวกเตอร์สองตัวใน Python:

 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

เราสามารถยืนยันได้ว่าสิ่งนี้ถูกต้องโดยการคำนวณระยะทางไปแมนฮัตตันด้วยมืออย่างรวดเร็ว:

Σ|A ฉัน – B ฉัน | = |2-5| + |4-5| + |4-7| + |6-8| = 3 + 1 + 3 + 2 = 9 .

วิธีที่ 2: ใช้ฟังก์ชัน 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

โปรดทราบว่าเรายังสามารถใช้ฟังก์ชันนี้เพื่อค้นหาระยะห่างของแมนฮัตตันระหว่างสองคอลัมน์ใน DataFrame ของแพนด้า:

 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

แหล่งข้อมูลเพิ่มเติม

วิธีการคำนวณระยะทางแบบยุคลิดใน Python
วิธีการคำนวณระยะทางแฮมมิงใน Python
วิธีการคำนวณระยะทาง Levenshtein ใน Python
วิธีการคำนวณระยะทาง Mahalanobis ใน Python

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *