python - 如何将大型数据集拆分为块并执行 fit_transform / fit_resample 和联合结果?
问题描述
我正在处理高度不平衡的大型数据集。我正在努力学习
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 是一种过采样方法。它会生成新的额外训练样本,帮助您克服原始数据集的不平衡。这种方法创建了一个非常大的数据集,不适合内存。您可以尝试的一件事是指定采样策略关键字。例如,对于二元分类,您可以将比率设置为 0.3。输出数据集应该更小,因此适合内存。
请注意,我没有测试过它。这只是一个建议。如果这不是您的选择,请随时粘贴一些示例数据,以便我们查看。
推荐阅读
- python - 在 QML 中制作 Hide/Flex 项目
- javascript - 重启后如何使反应起作用?
- reporting-services - SSRS 的 Kerberos 委派
- javascript - 页面生命周期 API - 是否可以手动冻结页面
- javascript - 使用字典作为状态对象时,Vuex + vue 没有反应
- ruby - Mac 中的“此 pry-doc 版本不支持 ruby/3.0.1”错误 => Ruby => Pry
- php - 对使用逗号分隔值接收的 ajax POST 数据使用 foreach
- c++ - 是否可以使用 WM_COPYDATA 发送窗口句柄?
- ruby-on-rails - Ruby Seed - 如何存储每个运动鞋的子类别并删除重复项?
- python - 如何创建一个 8*8 的 numpy 矩阵