2014-02-24 156 views
3

我定義了兩個矩陣類似以下內容:餘弦相似性 - 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) 

回答

8

錯誤無法通過的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) 
+0

感謝lejlot!我是這個角度計算的新手。它是(餘弦角)只是一個單一的值? –

+0

餘弦相似度就是兩個給定矢量之間角度的餘弦,所以它是介於'-1'和'1'之間的數字。但是,如果你在矩陣上使用它(如上)並且a和b有多於一行,那麼你將得到所有可能的餘弦矩陣(在這些矩陣之間的每對行之間)。 – lejlot

+0

非常感謝! –