Обязательно к прочтению:

Давайте начнем с реальной истории из жизни, когда я работал со своей бывшей компанией, у нас был сервер WebSocket для прогнозирования цен на криптовалюту, и у нас были партнеры, которые не хотели использовать выводы WebSocket, а вместо этого получали ежедневный поток хранимых данных. в файле CSV, хранящемся в S3. Короче говоря, мы не смогли найти экономически эффективный инструмент для пакетного вывода, поэтому нам пришлось временно использовать crontab и mailjet, пока мы настраивали воздушный поток.

Вы можете столкнуться с задачей в организации, которая требует от вас настройки воздушного потока, и большинству организаций на самом деле не нужен воздушный поток для второстепенных задач, когда они могут использовать простую и более эффективную платформу, такую ​​​​как M agniv.

В этом руководстве мы создадим модели прогнозирования цен Airbnb и настроим пакетное прогнозирование/вывод с помощью Magniv и s3 для запуска в запланированное время.

Вот оглавление на случай, если вы захотите перейти к части оркестровки.

Содержание
- Прогноз арендной платы Airbnb
очистка данных
предварительная обработка данных
перекрестная проверка и масштабирование функций
- обучение модели
- оценка модели и экспорт в файл рассола
- Оркестрация прогнозирования партии ежемесячно с Magniv
- Заключение

Прогноз арендной платы Airbnb

Для этого урока мы использовали набор данных на Kaggle (объявления Airbnb в Нью-Йорке).

Цель этого проекта — прогнозировать стоимость листинга Airbnb каждый месяц на основе отзывов и других характеристик, и мы сосредоточимся на обучении модели и координации с Magniv.

Во-первых, мы очистим набор данных, удалив нулевые значения и удалив столбцы геолокации и идентификаторы.

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

Простой импьютер — это оценщик, используемый для заполнения пропущенных значений в наборах данных. Для числовых значений используется среднее значение, медиана и константа. Для категорийных значений используется наиболее часто используемое и постоянное значение.

После процесса очистки давайте построим карту-диаграмму

  • Построить карту с помощью Folium

схема карты

  • Предварительная обработка данных

после диаграммы мы преобразуем категориальные значения в векторы и нормализуем столбцы со смешанными типами данных

  • Перекрестная проверка и масштабирование функций

Поскольку большинство алгоритмов хорошо работают с нормально распределенными данными, в этом разделе мы разделим данные на обучающий и тестовый наборы с соотношением 80:20 и используем стандартный масштабатор для выполнения нормализации (масштабирования признаков) в наборе данных.

  • Обучение модели, оценка и экспорт в pickle

В этом разделе мы будем обучать модель с использованием линейной регрессии, регрессора xgboost и гребневой регрессии.

После процесса обучения мы оценим модель, выберем модель с наименьшим количеством баллов и экспортируем ее с помощью pickle.

из нашей средней абсолютной оценки ошибки для каждой модели мы можем сделать вывод, что линейная регрессия работает лучше, чем другие модели.

Давайте перейдем к теории большого взрыва в оркестровке пакетного прогнозирования/логического вывода.

Организация ежемесячного прогнозирования партий с помощью Magniv

Прежде чем мы начнем, давайте немного прогуляемся по Магниву и потрясающей инфраструктуре, которую вы можете организовать с его помощью.

Magniv — это библиотека Python с открытым исходным кодом и инфраструктура, упрощающая координацию работы в масштабе. представьте, что вам не нужно настраивать воздушный поток для запуска оркестровки, которая будет дорогостоящей при работе на AWS EC2 или любых других виртуальных машинах, и вы можете настроить оркестровку с помощью простого декоратора и к тому же экономически эффективного.

Нажмите здесь, чтобы узнать больше о том, почему вам следует использовать Magniv вместо создания собственной среды Airflow.

Давайте воспользуемся Magniv, чтобы настроить оркестрацию, которая будет ежемесячно извлекать списки Airbnb из Нью-Йорка и запускать нашу модель прогнозирования. В столбцах результатов будут широта, длинна и прогнозируемая цена, поэтому мы можем позже построить картографический график с помощью Streamlit, plotly или folium.

Пакетный вывод/прогноз:

Это процесс, который основывает свои прогнозы на серии выводов или наблюдений. Кроме того, это простой процесс логического вывода, в котором модели запускаются через определенные промежутки времени или по расписанию.

Прежде чем мы перейдем к сценарию, нам нужно убедиться, что мы настроили наш каталог в стандартном подходе.

После создания этого каталога приступим к написанию скрипта.

Для upload_download_s3.py мы собираемся написать функцию для загрузки данных и загрузки данных в/из s3.

После этого давайте настроим нашу оркестровку на app.py.

В приведенном выше скрипте мы использовали следующие возможности Magniv

- Распределение ресурсов

Для выделения ресурсов мы увеличим ресурс для выполнения вывода с 1 ГБ по умолчанию до 2 ГБ ЦП и 2 ГБ памяти, чтобы ускорить операцию. вы можете запросить больше в зависимости от ваших предпочтений.

- При успехе:

Эти функции позволяют нам запускать задачу после завершения другой или настраивать задачу для запуска после завершения родительской или головной задачи. в приведенном выше сценарии мы настроили вывод для запуска после успешного завершения задачи функции получения данных.

- Ключи:

Ключи представляют собой функции. больше похоже на тождества. В приведенном выше сценарии мы устанавливаем ключ или идентификатор для обеих функций, поэтому мы можем использовать ключи для «при успехе». Однако по умолчанию ключи являются именами функций.

Мы можем установить триггеры задач, используя функции Magniv webhook. нажмите здесь, чтобы просмотреть документы Magniv

давайте завершим наш файл requirements.txt

Мы закончили писать скрипт оркестрации, давайте запушим скрипт на GitHub и воспользуемся облаком Magniv для запуска оркестровки.

Во-первых, вам нужно зарегистрироваться в Magniv с помощью вашего GitHub и создать рабочее пространство.

после создания рабочей области запуск кластера рабочей области займет около 10–15 минут, после чего вы можете перейти к config и настроить любую переменную среды, такую ​​как доступ к AWS и секретный идентификатор, тем временем ваш сборка должна быть запущена.

Для этого сеанса мы запустим задание вручную, потому что мы установили ежемесячное расписание, поэтому мы запустим его вручную, чтобы убедиться, что конвейер не подвержен ошибкам.

Из изображения выше мы можем сделать вывод, что наша оркестровка прошла успешно, и мы можем пойти дальше, чтобы визуализировать наш прогноз с помощью картографической диаграммы, показывающей цену в виде всплывающего окна.

Заключение

В конце этой сессии мы смогли построить базовую модель прогнозирования цен для аренды Airbnb, экспортировать модель, настроить конвейер пакетного прогнозирования с помощью AWS S3 и Magniv.

Ресурсы