Да, это можно сделать, но с imblearn Pipeline .
Видите ли, imblearn имеет свой собственный Pipeline для правильной обработки пробоотборников.Я описал это в аналогичный вопрос здесь .
При вызове 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)
Заполнитедетали по мере необходимости, и трубопровод позаботится обо всем остальном.