1

我想重新采样一些大数据(类大小:8mio vs 2700)我想通过对第 2 类进行过采样和对第 1 类进行欠采样来获得 50.000 个样本。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})
4

1 回答 1

1

看来你只有 32 条记录,所以 9它对那个类进行采样并将它的数据记录与类的数据记录对齐09: 968

您正在谈论将数据集减少到 100 条记录,您可以从XY(相同的 100 条记录)中随机抽取 100 条记录,或者取前 100 条记录y_resamp[:100]

于 2019-10-14T11:51:08.817 回答