Рассмотрим, как оптимизировать выбранную модель, подбирая не только ее гиперпараметры, но и разные стадии ее предобработки. Это можно осуществить все в тех же классах GridSearchCV и RandomizedSearchCV из библиотеки Scikit-learn. Фактически нам понадобится создать pipeline и научиться передавать его свойства в объект-переборщик. Сначала создадим демонстрационный датафрейм:
Разделим данные на тренировочную и валидационную выборки:
Теперь будем двигаться поэтапно, чтобы отслеживать прирост качества модели. Сначала создадим экземпляр класса ElasticNet, затем встроим его в пайплайн, после чего подберем оптимальные настройки последнего:
Как можно заметить, для повышения качества модели следует провести масштабирование и кодировку переменных. Сделаем это с помощью пайплайна, как рассказывал ранее:
Качество возросло. А теперь попытаемся с помощью GridSearchCV оптимизировать одновременно и гиперпараметры ElasticNet, и подходящие этапы предобработки. Для этого нужно передать в переборщик словарь параметров, соблюдая некоторые правила. В частности, обращаться к свойствам входящих в pipeline классов посредством указания имени шага, затем двойного подчеркивания и имени свойства, ниже пример:
Теперь из свойств best_score_, best_params_, best_estimator_ и cv_results_ можно получить лучшую оценку на кросс-валидации, оптимальные параметры, оценщика и результаты кросс валидации для всех итераций: