如何将大数据集拆分为块并执行 fit_transform / fit_resample 和 union 结果?

问题描述

我正在处理高度不平衡的大型数据集。我正在努力学习

smote_nc = SMOTENC(categorical_features=[df.dtypes=='category'],random_state=0)
X,y = smote_nc.fit_resample(X,y)    

却陷入了MemoryError

MemoryError: Unable to allocate 15.2 GiB for an array with shape (190824,10724) and data type float64

有没有办法将这个操作分块并将平衡的结果保存到数据帧中?

数据集示例如下所示

enter image description here

解决方法

Smote 是一种过采样方法。它会生成新的额外训练样本,帮助您克服原始数据集的不平衡。此方法创建了一个无法放入内存的非常大的数据集。您可以尝试的一件事是指定 sampling strategy 关键字。例如,对于二元分类,您可以将比率设置为 0.3。输出数据集应该更小,因此适合内存。

请注意,我还没有测试过。这只是一个建议。如果这不是您的选择,您可以随意粘贴一些示例数据,以便我们查看。