问题
I have defined two matrices like following:
from scipy import linalg, mat, dot
a = mat([-0.711,0.730])
b = mat([-1.099,0.124])
Now, I want to calculate the cosine similarity of these two matrices. What is the wrong with following code. It gives me an error of objects are not aligned
c = dot(a,b)/np.linalg.norm(a)/np.linalg.norm(b)
回答1:
You cannot multiply 1x2 matrix by 1x2 matrix. In order to calculate dot product between their rows the second one has to be transposed.
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)
回答2:
also:
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)
see: https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.cosine.html#scipy.spatial.distance.cosine
来源:https://stackoverflow.com/questions/21980644/calculate-cosine-similarity-of-two-matrices-python