Как нормализовать проверочный набор в GridSearchCV отдельно от обучающего набора? - PullRequest
1 голос
/ 11 октября 2019

Как масштабировать каждый фолд отдельно в GridSearchCV?

При обучении модели ML мы должны нормализовать (масштабировать) особенности, относящиеся к данным тренировки. А затем используйте встроенный скейлер на данных испытаний. Но если использовать резюме поиска по сетке (5-кратное), мы обычно предоставляем ему обучающие данные, которые уже масштабированы. Затем он разделяется на складки. Но как мы будем отдельно масштабировать каждую из 4-1 сгибов?

scl = MinMaxScaler()
scl.fit_transform(X_train)
scl.transform(X_test)

# The training data was scaled all together and
# not train and validation separately
cv = GridSearchCV(MODEL, GRID, scoring='f1', cv=5)
cv.fit(X_train, Y_train)

Пожалуйста, дайте мне знать, если у вас есть предложение, как добиться чего-то подобного.

1 Ответ

3 голосов
/ 11 октября 2019

Это то, для чего Конвейеры .

Преобразуйте текущую модель в модель Конвейера следующим образом:

new_model = Pipeline([('scaler', MinMaxScaler()), ('model', cur_model)])

Не масштабируйте свой тренировочный набор заранее. Каждый раз, когда вызывается fit, Pipeline автоматически подгоняет и преобразует ваши тренировочные данные (конечно, только с использованием обучающих данных) и вызывает transform на тестовом наборе с использованием установленного MinMaxScaler.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...