我正在做一個任務,我試圖爲Netflix獎品數據構建一個協作過濾模型。我使用的數據是一個CSV文件,我可以輕鬆導入到數據框中。現在我需要做的是創建一個由用戶組成的稀疏矩陣作爲行和電影列,每個單元格填充相應的評估值。當我嘗試繪製數據框中的值時,我需要爲數據框中的每一行運行循環,這在R中花費了大量時間,請任何人都可以提出更好的方法。下面是示例代碼和數據:從數據幀創建稀疏矩陣
MovieID UserID Rating
1 1 2 3
2 2 3 3
3 2 4 4
4 2 6 3
5 2 7 3
所以在最後我想是這樣的:
buildUserMovieMatrix <- function(trainingData)
{
UIMatrix <- Matrix(0, nrow = max(trainingData$UserID), ncol = max(trainingData$MovieID), sparse = T);
for(i in 1:nrow(trainingData))
{
UIMatrix[trainingData$UserID[i], trainingData$MovieID[i]] = trainingData$Rating[i];
}
return(UIMatrix);
}
從正在創建稀疏矩陣在數據幀的數據樣本 列是電影ID和行中的用戶ID
1 2 3 4 5 6 7
1 0 0 0 0 0 0 0
2 3 0 0 0 0 0 0
3 0 3 0 0 0 0 0
4 0 4 0 0 0 0 0
5 0 0 0 0 0 0 0
6 0 3 0 0 0 0 0
7 0 3 0 0 0 0 0
所以解釋是這樣的:用戶2級電影1爲3星級,用戶3額定電影2爲3 STA r等等其他用戶和電影。我的數據框中有大約8500000行,我的代碼只需要大約30-45分鐘來創建此用戶項目矩陣,我想獲得任何建議
非常感謝!!!,這工作絕對好。 – user37940 2014-10-05 23:43:14
sparseMatrix方法比第二種方法更快,謝謝。 :) – user37940 2014-10-05 23:50:45