Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calculate cosine similarity of two matrices

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)
like image 511
Nilani Algiriyage Avatar asked Feb 24 '14 06:02

Nilani Algiriyage


2 Answers

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)
like image 100
lejlot Avatar answered Sep 20 '22 04:09

lejlot


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

like image 23
Qy Zuo Avatar answered Sep 22 '22 04:09

Qy Zuo