是的,可以做到,但是可以使用Pipeline。
您会看到,imblearn有自己的管道来正确处理采样器。我在一个类似的问题中对此进行了描述。
在对象predict()
上imblearn.Pipeline
调用时,它将跳过采样方法,并保留将要传递给下一个转换器的数据。您可以通过在此处查看源代码来确认这一点]
if hasattr(transform, "fit_sample"):
pass
else:
Xt = transform.transform(Xt)
因此,要使其正常工作,您需要以下内容:
from imblearn.pipeline import Pipeline
model = Pipeline([
('sampling', SMOTE()),
('classification', LogisticRegression())
])
grid = gridsearchcv(model, params, ...)
grid.fit(X, y)
根据需要填写详细信息,管道将处理其余的工作。