3

我正在尝试使用 SMOTE 来处理二进制分类中不平衡的类数据,我所知道的是:例如,如果我们使用

sm = SMOTE(ratio = 1.0, random_state=10)

Before OverSampling, counts of label '1': [78]
Before OverSampling, counts of label '0': [6266] 

After OverSampling, counts of label '1': 6266
After OverSampling, counts of label '0': 6266

对于第 1 类为少数的情况,将导致 50:50 的第 0 类和第 1 类数量

sm = SMOTE(ratio = 0.5, random_state=10)

Before OverSampling, counts of label '1': [78]
Before OverSampling, counts of label '0': [6266] 

After OverSampling, counts of label '1': 3133
After OverSampling, counts of label '0': 6266

将导致类 1 的大小减半。

我的问题:

我们如何设置比率以使 1 类比 0 类获得更多,例如 75:25?

4

2 回答 2

1

尝试使用字典。

smote_on_1 = 18798 
#(In your case 18798 is thrice of 6266)

smt = SMOTE(sampling_strategy={1: smote_on_1})
X_train, y_train = smt.fit_sample(X_train, y_train)
于 2020-03-06T21:19:44.750 回答
0

文档中,它看起来ratio可以是大于 1 的浮点数 - 即您可以设置的 75:25 比率ratio=3
试试看这是否有效。

于 2019-09-08T07:32:38.510 回答