Python 我们如何在SMOTE中设置比率,使阳性样本比阴性样本多?

Python 我们如何在SMOTE中设置比率,使阳性样本比阴性样本多?,python,pandas,scikit-learn,preprocessor,smote,Python,Pandas,Scikit Learn,Preprocessor,Smote,我试图使用SMOTE来处理二进制分类中的不平衡类数据,我知道的是:例如,如果我们使用 sm=SMOTE(比率=1.0,随机状态=10) 过采样前,标签“1”的计数:[78] 过采样前,标签“0”的计数:[6266] 过采样后,标签“1”的计数:6266 过采样后,标签“0”的计数:6266 对于1类为少数的情况,将导致0类和1类的数量为50:50 及 sm=SMOTE(比率=0.5,随机状态=10) 过采样前,标签“1”的计数:[78] 过采样前,标签“0”的计数:[6266] 过采样后,标签

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

sm=SMOTE(比率=1.0,随机状态=10)
过采样前,标签“1”的计数:[78]
过采样前,标签“0”的计数:[6266]
过采样后,标签“1”的计数:6266
过采样后,标签“0”的计数:6266
对于1类为少数的情况,将导致0类和1类的数量为50:50

sm=SMOTE(比率=0.5,随机状态=10)
过采样前,标签“1”的计数:[78]
过采样前,标签“0”的计数:[6266]
过采样后,标签“1”的计数:3133
过采样后,标签“0”的计数:6266
将导致类1的大小减半为类0的大小

我的问题:

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

从中,看起来
比率
可以是大于1的浮点-即,对于75:25的比率,您可以设置
比率=3

试试看这是否有效。

试着使用字典

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)

我假设您使用的是SMOTE的这个实现,或者是一个非常类似的实现;如果没有,请在问题中指定您使用的实现。如果您正在使用的实现非常常见,我应该知道,请告诉我(我真的不知道,我不是在讽刺)。我尝试过。但是得到了这样一条消息:“采样策略”是浮点时,它应该在范围(0,1)内,因此mx是1.0。您可以做的另一件事是发送一个带有所需样本数的dict。再次从文档:当dict时,键对应于目标类。这些值对应于每个目标类所需的样本数