有效计算余弦相似度之和

时间:2019-11-11 04:32:35

标签: python optimization trigonometry similarity cosine-similarity

我正在尝试有效地计算余弦相似度之和,但是我目前的方法相当慢。

考虑到我有三个向量v_1V_2v_3。除了简单地执行以下操作之外,还有没有其他更有效的方法来计算余弦相似度之和:Cos(v_1,v_2) + Cos(v_1,v_3) + Cos(v_2,v_3)

如果可能,我想避免并行化。

下面是我当前方法的一个粗略示例:

import numpy as np

def cosine_sim(A,B):
    dot = np.dot(A, B)
    norma = np.linalg.norm(A)
    normb = np.linalg.norm(B)
    cos = dot / (norma * normb)
    return cos

vectors = np.array([
    [1,0,1,1,1,0,0,1,0,0,1,0,1],
    [1,0,1,0,1,1,0,1,0,1,1,0,0],
    [0,1,0,1,0,1,0,0,0,1,1,0,0]
])

_sum =0
for i in range(len(vectors)):
    for j in range(i+1, len(vectors)):
        _sum += cosine_sim(vectors[i], vectors[j])      

0 个答案:

没有答案