问题描述
我正在处理高度不平衡的大型数据集。我正在努力学习
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
有没有办法将这个操作分块并将平衡的结果保存到数据帧中?
解决方法
Smote 是一种过采样方法。它会生成新的额外训练样本,帮助您克服原始数据集的不平衡。此方法创建了一个无法放入内存的非常大的数据集。您可以尝试的一件事是指定 sampling strategy 关键字。例如,对于二元分类,您可以将比率设置为 0.3。输出数据集应该更小,因此适合内存。
请注意,我还没有测试过。这只是一个建议。如果这不是您的选择,您可以随意粘贴一些示例数据,以便我们查看。