我定义了两个矩阵类似以下内容:余弦相似性 - Python的
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的
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)
错误无法通过的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)
也:
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)
感谢lejlot!我是这个角度计算的新手。它是(余弦角)只是一个单一的值? –
余弦相似度就是两个给定矢量之间角度的余弦,所以它是介于'-1'和'1'之间的数字。但是,如果你在矩阵上使用它(如上)并且a和b有多于一行,那么你将得到所有可能的余弦矩阵(在这些矩阵之间的每对行之间)。 – lejlot
非常感谢! –