余弦相似度是一种衡量两个向量之间相似度的方法,其计算公式为:
其中, 和
是两个向量,
和
是向量
和
的模。本式子其实大家十分熟悉,在高中数学中就已经接触过。是用来计算两个向量之间的夹角的余弦值。
标准代码如下
def cosine_similarity(v1, v2):
if v1.shape != v2.shape:
raise ValueError("Arrays must have the same shape")
if v1.size == 0:
raise ValueError("Arrays cannot be empty")
v1_flat = v1.flatten()
v2_flat = v2.flatten()
dot_product = np.dot(v1_flat, v2_flat)
magnitude1 = np.sqrt(np.sum(v1_flat**2))
magnitude2 = np.sqrt(np.sum(v2_flat**2))
if magnitude1 == 0 or magnitude2 == 0:
raise ValueError("Vectors cannot have zero magnitude")
return round(dot_product / (magnitude1 * magnitude2), 3)