Эффективно рассчитать сумму сходства косинусов - PullRequest
0 голосов
/ 11 ноября 2019

Я пытаюсь эффективно вычислить сумму сходства косинусов, но мой текущий метод довольно медленный.

Предположим, у меня есть три вектора v_1, V_2 и v_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])      
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...