НачатьНачать бесплатно

Перекрёстная проверка конвейера модели для предсказания длительности полёта

Модель с перекрёстной проверкой, которую вы только что построили, была простой: для предсказания 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=____)
Редактировать и запускать код