Dask onehot编码存储器

2024-04-27 10:16:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用一个热编码使用dask对分类数据进行编码,并将其导出到csv。在

有问题的数据是“电影”-演员.dat“摘自hetrec2011-movielens-2k-v2(可从https://grouplens.org/datasets/hetrec-2011/获得)。 如下所示(我只对前两列感兴趣):

      movieID           actorID
0        1       annie_potts
1        1       bill_farmer
2        1       don_rickles
3        2       bonnie_hunt
4        2    bradley_pierce
5        2  darryl_henriques

原始数据可以很好地放入内存:[231742行x 2列]。 这里有95321个惟一的actorID和10174个movieid,所以我将以10174行和95321列结束,这意味着它应该占用大约970兆字节,外加一些开销。在

我尝试编码的方式是:

^{pr2}$

结果是:

     actorID_annie_potts  actorID_bill_farmer  actorID_bonnie_hunt  actorID_bradley_pierce  actorID_darryl_henriques  actorID_don_rickles
movieID                                                                  
1                          1                    1                    0                    0                         0                    1

2                          0                    0                    1                    1                         1                    0

在完整数据上运行它会填满所有可用内存(约13 GB),并导致内存错误。在

重新分区

dd.get_dummies(df.categorize().repartition(npartitions=20))

使用缓存和单线程调度程序没有帮助。在

问题可能是在中间步骤中(在执行sum()之前),dataframe将有231742行和95321列,这将占用至少22GB的空间,这比我的交换分区大。在

我该怎么做?在


Tags: 数据编码donhuntbillbonniefarmerbradley