大型数据集的一种热编码方式

问题描述

我想使用在mlxtend库先验算法中实现的关联规则来构建推荐系统。在我的销售数据中,有关于3600万笔交易和5万种独特产品的信息。 我尝试使用sklearn OneHotEncoder和pandas get_dummies(),但由于无法创建形状为(36 mil,50k)的框架,两者均出现OOM错误

MemoryError: Unable to allocate 398. GiB for an array with shape (36113798,50087) and data type uint8

还有其他解决方法吗?

解决方法

我认为一个好的解决方案是使用嵌入而不是一键编码来解决您的问题。此外,我建议您将数据集分成较小的子集,以进一步避免内存消耗问题。

您还应该参考以下线程:https://datascience.stackexchange.com/questions/29851/one-hot-encoding-vs-word-embeding-when-to-choose-one-or-another

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...