2017-05-23 295 views
1

我有一個矩陣,其中包含有關用戶查看了哪個項目的信息,即1 =查看了項目,0 =查看了項目。這個矩陣是使用在R中將大矩陣轉換爲二元評分矩陣?

binmatrix<- as(user_asset_matrix2,"binaryRatingMatrix") 
binmatrix 
2 x 2 rating matrix of class ‘binaryRatingMatrix’ with 3 ratings. 

每當我試圖將其轉換成binaryRatingMatrix它形成一個2×2矩陣,是沒有用的尺寸爲9276 X 13068.但是,一個非常大的矩陣。轉換binmatrix回來後,矩陣,則轉換爲:

0  1 
0 TRUE  TRUE 
1 TRUE  FALSE 

誰能給我一個解決方案來解決這個問題?

+0

哪些是'user_asset_matrix2'的尺寸是多少? – R18

+0

您使用的是recommenderlab嗎?當我將bin矩陣轉換回正常矩陣時,我得到的尺寸與原始矩陣相同。我無法重現您所面臨的問題。 – TUSHAr

+0

user_asset_matrix的維度爲9276x13068。並使用推薦實驗室。當我將bin矩陣轉換回原始時,我得到一個2x2矩陣 –

回答

1

我剛剛設法克服了這個問題,雖然我幾乎不知道如何......讓我試着幫你。

首先,你肯定大型矩陣的格式實際上是matrix而不是data.framedata.table?不知怎的,這是我的問題...

在這兩種情況下,假設已經獲得了矩陣從交易清單trlist有很多很多行兩列,如下面的

> dim(trlist) 
    [1] 100000 2 
    > colnames(trlist) 
    [1] "customer" "item" 

我們可以開始獲得使用從reshape2acast一個希望良好的客戶項目矩陣(並請原諒我的強迫症縮進選擇):

product_item <- 
     acast(
      data   = trlist, 
      formula  = customer ~ item, 
      value.var  = item, 
      fun.aggregate = length 
     ) 

現在,我們應該做好準備:

product_item <- as(product_item, "realRatingMatrix") 
    sp_product_item <- binarize(product_item, minRating = 1) 

如果你有沒有來自交易清單矩陣,可以使用從已經加載reshape2melt獲得一個,然後按照前面的步驟。

我不能保證,這將幫助你,但它爲我工作:)