【问题标题】:Convert large matrix to binary rating matrix in R?将大矩阵转换为R中的二进制评级矩阵?
【发布时间】:2017-05-23 06:12:18
【问题描述】:

我有一个矩阵,其中包含有关用户查看了哪些项目的信息,即 1= 已查看项目,0= 未查看项目。这个矩阵是一个非常大的矩阵,尺寸为 9276 x 13068。但每当我尝试使用

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

它形成了一个没有用的 2x2 矩阵。将 binmatrix 转换回矩阵后,将其转换为:

  0        1 
0 TRUE     TRUE
1 TRUE     FALSE

谁能给我一个解决这个问题的方法?

【问题讨论】:

  • user_asset_matrix2的维度是多少?
  • 你在使用推荐实验室吗?当我将 bin 矩阵转换回普通矩阵时,我得到与原始矩阵相同的维度。我无法重现您面临的问题。
  • user_asset_matrix 的维度为 9276x13068。我正在使用推荐实验室。当我将 bin 矩阵转换回原始矩阵时,我得到一个 2x2 矩阵

标签: r matrix


【解决方案1】:

我的代码也有类似的问题,并且得到了相同的输出,尽管我的初始数据集有很多评级。我正在阅读一个 csv 文件,事实证明你不能简单地将 data.frame 直接强制转换为 binaryRatingMatrix 而不先将其转换为数据矩阵:

library(recommenderlab)
csv<-read.csv("csv.csv",header=TRUE,row.names=1)
csv<-as.matrix(csv)
csv<-as(csv,"binaryRatingMatrix)
csv
139x867 rating matrix of class 'binaryRatingMatrix' with 3944 ratings.

当您在将 csv 转换为“binaryRatingMatrix”后打印它时,它现在应该显示变量的正确维度以及您期望的评分数量。

【讨论】:

    【解决方案2】:

    我刚刚设法克服了这个问题,虽然我几乎不确定如何......让我试着帮助你。

    首先,您确定大矩阵的格式实际上是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)
    

    如果你的矩阵不是来自一个交易列表,你可以使用melt从已经加载的reshape2中获取一个,然后按照前面的步骤。 p>

    我不能保证这对你也有帮助,但它对我有用:)

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      • 2015-05-13
      • 2012-12-03
      • 2015-06-01
      • 2020-04-21
      • 1970-01-01
      相关资源
      最近更新 更多