วิธีการคำนวณความคล้ายคลึงโคไซน์ใน 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 นี้ เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับความคล้ายคลึงของโคไซน์