Python 如何结合使用过采样和欠采样?学习不平衡

Python 如何结合使用过采样和欠采样?学习不平衡,python,machine-learning,oversampling,imblearn,imbalanced-data,Python,Machine Learning,Oversampling,Imblearn,Imbalanced Data,我想对一些大数据进行重采样(类大小:8mio vs 2700) 我希望通过2类过采样和1类欠采样获得每个样品的50000个样本。 imblearn似乎提供了过采样和欠采样的混合,但我不知道它是如何工作的 from collections import Counter from imblearn.over_sampling import SMOTENC from imblearn.under_sampling import TomekLinks from imblearn.combine impo

我想对一些大数据进行重采样(类大小:8mio vs 2700) 我希望通过2类过采样和1类欠采样获得每个样品的50000个样本。 imblearn似乎提供了过采样和欠采样的混合,但我不知道它是如何工作的

from collections import Counter
from imblearn.over_sampling import SMOTENC
from imblearn.under_sampling import TomekLinks
from imblearn.combine import SMOTETomek

smt = SMOTETomek(random_state=1)
X_resamp, y_resamp = smt.fit_resample(data_all[29000:30000], labels_all[29000:30000])
在数据看起来像

>>Counter(labels_all[29000:30000])
>>Counter({0: 968, 9: 32})
然后呢

>>Counter(y_resamp)
>>Counter({0: 968, 9: 968})
正如我所期待或希望的那样

>>Counter(y_resamp)
>>Counter({0: 100, 9: 100})

似乎只有32条类为
9
的记录,因此它对该类进行过采样,并将其数据记录与类
0
的数据记录对齐,因此
9:968


您正在谈论将数据集减少到100条记录,您可以为每个类随机抽样100条记录,从
X
Y
(相同的100条记录)或像
Y\u重新映射[:100]

是的,你是对的,我只是希望像
SMOTETomek
这样的过采样和欠采样组合可以一步完成。现在,我首先通过
data\u all[labels\u all==0]对类0进行下采样,然后使用“SMOTE”对简化后的数据集进行过采样。我只是希望有一个更复杂的解决方案,随机下采样。我正在从850万个对象降采样到10000个,所以我希望有办法获得10000个最多样化的观察结果。