如何解决R展开矩阵,但有错误:无法分配给不存在的元素
Win10 Build 18363.836; R版本R-4.0.2; RStudio版本1.3.1093;处理器:Intel i7-7500U;物理内存:16GB;硬盘:500GB SSD
我正在研究Instacart Market Basket数据集。为了使用recommenderlab R包构建推荐模型,我需要创建一个带有customer_id和product_name的矩阵以进行协作过滤。
加载数据后,我合并并过滤了数据以准备训练集。
data_train = orders %>%
filter(eval_set=='train') %>%
left_join(order_products) %>%
left_join(products) %>%
mutate(actual=1) %>%
select(user_id,order_id,product_id,product_name,actual)
我试图建立这样的矩阵。
data_train %>%
select(user_id,product_name) %>%
mutate(n=1) %>%
arrange(product_name) %>%
pivot_wider(names_from = "product_name",values_from = "n",values_fill=0)
但收到错误消息:
错误无法分配给不存在的元素。 X 位置2、3、4、5、6等不存在。我只有1个元素。
我无法解决该问题,因此我尝试了另一种根据此article来构建矩阵的方法:
ratings_matrix <- train01 %>%
select(user_id,product_name) %>%
mutate(value = 1) %>%
spread(product_name,value,fill = 0) %>%
select(-user_id) %>%
as.matrix() %>%
as("binaryRatingMatrix")
ratings_matrix
现在显示:
错误:无法分配大小为19.2 Gb的向量
所以我通过以下方式扩展了内存限制:
memory.limit(50000)
然后,我检查了系统,它显示了所有驱动器的总页面文件43377MB(作为虚拟内存),远远超过R要求生成矩阵。但是仍然收到相同的错误消息。
我还尝试将火车数据分成四部分,只是将其转换为25%,但仍然出现错误:
错误:无法分配大小为3.2 Gb的向量
这甚至远远少于现在笔记本电脑上的可用物理内存。而且由于我需要对数据进行协作过滤,因此最好将矩阵整体生成。谁能帮助我找出我在编码上犯的错误,或者教我另一种生成矩阵的方法?谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。