用scipy计算“余弦”指标的最快方法

时间:2016-08-29 22:07:36

标签: python scipy cosine

我得到了一个零和一个零的矩阵。我需要在矩阵中找到20行具有最高余弦指标的1 specific行:

如果我有10行,而第5行称为specific,我想选择它们之间的最高值:
cosine(1row,5row),cosine(2row,5row),...,cosine(8row,5row),cosine(9row,5row)

首先,我试着计算指标。 这不起作用:

A = ratings[:,100]
A = A.reshape(1,A.shape[0])
B = ratings.transpose()
similarity = -cosine(A,B)+1
A.shape = (1L, 71869L)
B.shape = (10000L, 71869L)

错误是:Input vector should be 1-D.我想知道,如何在没有错误的情况下美观地实现这一点,但最重要的是 - 哪种解决方案最快?

在我看来,scipy的帮助并没有实现最快的方式; 我们只需要在specific行中取所有行,然后在所有其他行中查看这些索引。那些具有最高重合度的行将具有最高的矩阵。

有没有更快的方法?

1 个答案:

答案 0 :(得分:0)

最快的方法是使用矩阵运算:something like np.multipy(A,B)