我试图用一个热编码使用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的空间,这比我的交换分区大。在
我该怎么做?在
目前没有回答
相关问题 更多 >
编程相关推荐