使用 scipy 计算 "cosine" 指标的最快方法
Fastest way to calculate "cosine" metrics with scipy
我得到了一个由 1 和 0 组成的矩阵。我需要找到 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
行中的所有索引,然后查看所有其他行中的这些索引。那些具有最高重合度的行将具有最高矩阵。
有没有更快的方法?
最快的方法是使用矩阵运算:something like np.multipy(A,B)
我得到了一个由 1 和 0 组成的矩阵。我需要找到 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
行中的所有索引,然后查看所有其他行中的这些索引。那些具有最高重合度的行将具有最高矩阵。
有没有更快的方法?
最快的方法是使用矩阵运算:something like np.multipy(A,B)