我目前正在使用recommenderlab包制作具有8k用户和200k项目的推荐系统。
在使用recommenderlab的功能之前,我在将数据框转换为真实评分矩阵时遇到了麻烦。
item_idx mem_idx rating
1 00600015987465341234f7dae4 534122168382b 4
2 0060001660924533ad0cd443e1 53d79f413e3aa 5
3 006000195520453d7ac28e4b4b 53d79f413e3aa 5
4 0060001986642536d6fc77d269 535146eb5af95 4
5 00708969975005409278f828f3 540927366f478 5
这是我的数据框的一部分,所有 (item_idx, mem_idx) 对都是不同的。
mat <- tapply(df$rating, list(df$mem_idx, df$ID), FUN=function(x) x)
我尝试使用此代码将数据帧转换为矩阵,有时会成功,但通常会出现这样的错误。
Error: cannot allocate vector of size 1.1 Gb
在成功的案例中,
r <- as(mat, "realRatingMatrix")
我应用此代码使其成为 realRatingMatrix 但我总是因为这个错误而失败
Error in which(x == 0, arr.ind = TRUE) :
error in evaluating the argument 'x' in selecting a method for function 'which': Error: (list) object cannot be coerced to type 'double'
任何知道如何避免这些错误之一的人,请帮助我。
最佳答案
将数据帧转换为稀疏矩阵,然后转换为 realRatingMatrix 类
itm <- factor(data[,1])
mem <- factor(data[,2])
# sparsematrix
s <- sparseMatrix(
as.numeric(itm),
as.numeric(mem),
dimnames = list(
as.character(levels(itm)),
as.character(levels(mem))),
x = data[,3])
#convert to realRatingMatrix class
rm <- new("realRatingMatrix",data=s)
关于r - 在 R 中处理大数据时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27185973/