【问题标题】:Calculate cosine similarity of two matrices计算两个矩阵的余弦相似度
【发布时间】:2014-03-25 16:41:32
【问题描述】:

我定义了两个矩阵,如下所示:

from scipy import linalg, mat, dot
a = mat([-0.711,0.730])
b = mat([-1.099,0.124])

现在,我想计算这两个矩阵的余弦相似度。以下代码有什么问题。它给了我一个错误objects are not aligned

c = dot(a,b)/np.linalg.norm(a)/np.linalg.norm(b)

【问题讨论】:

    标签: python numpy matrix cosine-similarity


    【解决方案1】:

    您不能将 1x2 矩阵乘以 1x2 矩阵。为了计算它们的行之间的点积,第二个必须被转置。

    from scipy import linalg, mat, dot
    a = mat([-0.711,0.730])
    b = mat([-1.099,0.124])
    
    c = dot(a,b.T)/linalg.norm(a)/linalg.norm(b)
    

    【讨论】:

    • 谢谢lejlot!我是这个角度计算的新手。它(余弦角)只是一个值吗?
    • 余弦相似度只是两个给定向量之间夹角的余弦,所以它是一个介于-11 之间的数字。但是,如果您在矩阵上使用它(如上所述)并且 a 和 b 有超过 1 行,那么您将得到一个包含所有可能余弦的矩阵(在这些矩阵之间的每对行之间)。
    【解决方案2】:

    还有:

    import numpy as np
    import scipy.spatial.distance as distance
    a = np.array([0.1, 0.2])
    b = np.array([0.3,0.4])
    c = 1 - distance.cosine(a, b)
    

    见:https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.cosine.html#scipy.spatial.distance.cosine

    【讨论】:

      猜你喜欢
      • 2015-07-21
      • 2016-10-22
      • 2019-04-22
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 2019-04-07
      • 1970-01-01
      • 2015-07-17
      相关资源
      最近更新 更多