imblearn 如何在预测期间应用转换?

数据挖掘 scikit-学习 逻辑回归 python-3.x 管道
2022-03-12 10:48:47

假设我有一个 sklearn 管道:

  1. 估算数据
  2. 随机过采样少数类
from imblearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from imblearn.over_sampling import RandomOverSampler

pipeline = Pipeline(
    [('1', SimpleImputer(strategy='median'),
     ('2', RandomOverSampler(random_state=0)),
     ('estimator', <Some Logistic Regression>)
    ]
)

然后我可以将它拟合到我的训练集pipeline.fit(X_train, y_train),并且随机过采样器应该正确识别要采样的类。如果我尝试预测 iepipeline.predict(X_test)怎么办?由于没有类,随机过采样器是否仍然适用?我希望 imputer 无论如何都可以申请,但是呢RandomOverSampler

谢谢

1个回答

您通常不应该对测试集应用重采样(尽管对于是否在不同级别的验证数据上这样做有一些不同的意见)。imblearn 有自己的管道版本来实现这一点;特别是,管道文档说

采样器仅在拟合期间应用。