如何在python中计算余弦相似度
余弦相似度是内积空间的两个向量之间相似度的度量。
对于两个向量 A 和 B,余弦相似度计算如下:
余弦相似度= ΣA i B i / (√ΣA i 2 √ΣB i 2 )
本教程介绍如何使用NumPy库中的函数在 Python 中计算向量之间的余弦相似度。
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.请参阅此维基百科页面以了解有关余弦相似度的更多信息。