我定義了兩個矩陣類似以下內容:餘弦相似性 - 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
非常感謝! –