วิธีการคำนวณความคล้ายคลึงโคไซน์ใน python


ความคล้ายคลึงกันของโคไซน์ คือการวัดความคล้ายคลึงกันระหว่างเวกเตอร์สองตัวของปริภูมิผลคูณภายใน

สำหรับเวกเตอร์สองตัว A และ B ความคล้ายคลึงของโคไซน์จะถูกคำนวณดังนี้:

ความคล้ายคลึงกันของโคไซน์ = ΣA i B i / (√ΣA i 2 √ΣB i 2 )

บทช่วยสอนนี้จะอธิบายวิธีคำนวณความคล้ายคลึงโคไซน์ระหว่างเวกเตอร์ใน Python โดยใช้ฟังก์ชันจากไลบรารี NumPy

ความคล้ายคลึงโคไซน์ระหว่างเวกเตอร์สองตัวใน Python

รหัสต่อไปนี้แสดงวิธีการคำนวณความคล้ายคลึงโคไซน์ระหว่างสองอาร์เรย์ใน Python:

 from numpy import dot
from numpy. linalg import norm

#define arrays
a = [23, 34, 44, 45, 42, 27, 33, 34]
b = [17, 18, 22, 26, 26, 29, 31, 30]

#calculate Cosine Similarity
cos_sim = dot (a, b)/( norm (a)* norm (b))

cos_sim

0.965195008357566

ความคล้ายคลึงโคไซน์ระหว่างทั้งสองตารางกลายเป็น 0.965195

โปรดทราบว่าวิธีนี้ใช้ได้กับสองอาร์เรย์ที่มีความยาวเท่าใดก็ได้:

 import numpy as np
from numpy import dot
from numpy. linalg import norm

#define arrays
a = np.random.randint(10, size= 100 )
b = np.random.randint(10, size= 100 )

#calculate Cosine Similarity
cos_sim = dot (a, b)/( norm (a)* norm (b))

cos_sim

0.7340201613960431

อย่างไรก็ตาม วิธีนี้จะใช้ได้ก็ต่อเมื่ออาร์เรย์ทั้งสองมีความยาวเท่ากัน:

 import numpy as np
from numpy import dot
from numpy. linalg import norm

#define arrays
a = np.random.randint(10, size= 90 ) #length=90
b = np.random.randint(10, size= 100 ) #length=100

#calculate Cosine Similarity
cos_sim = dot (a, b)/( norm (a)* norm (b))

cos_sim

ValueError : shapes (90,) and (100,) not aligned: 90 (dim 0) != 100 (dim 0)

ความคิดเห็น

1. มีหลายวิธีในการคำนวณความคล้ายคลึงโคไซน์โดยใช้ Python แต่ตามที่อธิบายไว้ ในเธรด Stack Overflow วิธีที่อธิบายในบทความนี้กลับกลายเป็นวิธีที่เร็วที่สุด

2. อ้างถึงหน้า Wikipedia นี้ เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับความคล้ายคลึงของโคไซน์

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

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