Перекрёстная проверка конвейера модели для предсказания длительности полёта
Модель с перекрёстной проверкой, которую вы только что построили, была простой: для предсказания duration использовался только признак km.
Однако важным предиктором длительности полёта является и аэропорт вылета. Как правило, вылет из загруженных аэропортов занимает больше времени. Давайте проверим, улучшит ли добавление этого признака нашу модель!
В этом упражнении вы добавите поле org в модель. Поскольку org является категориальным признаком, перед включением в модель его необходимо сначала преобразовать в индекс, а затем применить к нему унитарное кодирование (one-hot encoding) — и только после этого объединить с km для построения регрессионной модели. Все эти операции мы обернём в конвейер.
Следующие объекты уже созданы:
params— пустая сетка параметровevaluator— оценщик регрессииregression— объектLinearRegressionсlabelCol='duration'.
Классы StringIndexer, OneHotEncoder, VectorAssembler и CrossValidator уже импортированы.
Это упражнение является частью курса
Машинное обучение с PySpark
Инструкции к упражнению
- Создайте строковый индексатор. Укажите входное поле
orgи выходное полеorg_idx. - Создайте унитарный кодировщик (one-hot encoder). Назовите выходное поле
org_dummy. - Объедините поля
kmиorg_dummyв одно поле с именемfeatures. - Создайте конвейер, включающий следующие операции: строковый индексатор, унитарный кодировщик, сборщик и линейная регрессия. На его основе создайте объект перекрёстной проверки.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Create an indexer for the org field
indexer = ____(____, ____)
# Create an one-hot encoder for the indexed org field
onehot = ____(____, ____)
# Assemble the km and one-hot encoded fields
assembler = ____(____, ____)
# Create a pipeline and cross-validator.
pipeline = ____(stages=[____, ____, ____, ____])
cv = ____(estimator=____,
estimatorParamMaps=____,
evaluator=____)