Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算两个矩阵的余弦相似性_Python_Numpy_Matrix_Cosine Similarity - Fatal编程技术网

Python 计算两个矩阵的余弦相似性

Python 计算两个矩阵的余弦相似性,python,numpy,matrix,cosine-similarity,Python,Numpy,Matrix,Cosine Similarity,我定义了两个矩阵,如下所示: from scipy import linalg, mat, dot a = mat([-0.711,0.730]) b = mat([-1.099,0.124]) 现在,我想计算这两个矩阵的余弦相似性。以下代码有什么问题。它给我一个错误,对象未对齐 c = dot(a,b)/np.linalg.norm(a)/np.linalg.norm(b) 不能将1x2矩阵乘以1x2矩阵。为了计算它们行之间的点积,必须对第二行进行转置 from scipy import

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

from scipy import linalg, mat, dot
a = mat([-0.711,0.730])
b = mat([-1.099,0.124])
现在,我想计算这两个矩阵的余弦相似性。以下代码有什么问题。它给我一个错误,对象未对齐

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)
此外:


请参阅:

谢谢lejlot!我不熟悉这个角度计算。它(余弦角)只是一个值吗?余弦相似性只是两个给定向量之间角度的余弦,因此它是介于
-1
1
之间的数字。但是,如果您在矩阵上使用它(如上所述),并且a和b有超过1行,那么您将得到一个包含所有可能余弦的矩阵(在这些矩阵之间的每对行之间)。
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)