2 回答

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個贊
使用user_normalized
(?user_normalized.T
) 的轉(zhuǎn)置將適用于更多維。
所以,簡短的回答是:使用
distances?=?np.dot(movie_content,?user_normalized.T)
更復(fù)雜的答案是,點(diǎn)積僅針對兩個矩陣定義X
,并且Y
如果第二個維度與X
第一個維度匹配Y
,即X
具有形狀(M, N)
和Y
形狀(N, D)
。點(diǎn)積的結(jié)果是一個維度為 的新矩陣(M, D)
。
在您的情況下,您有一個(27278, 20)
矩陣和一個(1, 20)
矩陣。轉(zhuǎn)置將(1, 20)
矩陣變成(20, 1)
矩陣,從而滿足點(diǎn)積的條件。最終結(jié)果是一個(27278, 1)
矩陣,其中每個單元格包含第 N 部電影和第 D 個用戶的乘積。

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個贊
您需要將矢量重塑為(-1, 1)
.?如果要取兩個形狀數(shù)組的點(diǎn)積(m, k)
,(t, n)
則k
必須等于t
.?由于在 numpy 中沒有向量的概念,你基本上有一個形狀數(shù)組(27278, 20)
(movie_content) 和另一個形狀數(shù)組(1, 20)
(user_normalized)。為了能夠獲取點(diǎn)積,您必須重塑 user_normalized 數(shù)組的形狀,(20, 1)
使 movie_content 和 user_normalized 數(shù)組“對齊”(numpy 喜歡這樣稱呼它)作為dot
產(chǎn)品。
因此,您的代碼看起來像
import?numpy?as?np distances?=?np.dot(movie_content,?user_normalized[1].reshape(-1,?1))
添加回答
舉報