Создавайте несколько приложений с навигацией/вкладками с тире и графикой.

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

Изюминкой этого урока будет:

  1. Концепция обратного вызова Dash
  2. Развернуть на Heroku
  3. Советы

Структура проекта

forecast_passenger_bi/
├── .gitignore
├── app.py
├── apps/
│   ├── api_docs.py
│   ├── predictive_analytics.py
│   ├── project_explanation.py
│   └── stats.py
├── index.py
├── joblib_file_ref/
│   ├── geo_region.joblib
│   ├── list_year.joblib
│   ├── operating_airline.joblib
│   └── operating_airlines.joblib
├── LICENSE
├── model/
│   └── moving_avg_diff_passenger_ovetime_model.pkl
├── print_listdir.py
├── Procfile
├── readme.MD
├── requirements.txt
├── runtime.txt
└── src/
    ├── data/
    │   ├── Air_Traffic_Passenger_Statistics.csv
    │   ├── datapreparation/
    │   │   ├── Air_Traffic_Passenger_Statistics.csv
    │   │   ├── forecast_data.csv
    │   │   ├── generate_modified_data.py
    │   │   ├── prepare_data.py
    │   │   └── prepare_for_eda.csv
    │   └── passanger_total.csv
    ├── load_data.py
    └── visualization.py

Рабочий процесс этой панели прогноза объясняется ниже:

Приведенная выше панель прогнозирования содержит несколько файлов Python с определенной целью:

а. stats.pyпоказывает статистику наших прогнозных данных (графический рисунок). Рисунок получен из файла visualization.py. Полный код stats.py доступен здесь.

б. predictive_analytics.py используется для создания прогноза на основе выбранного временного горизонта, а также для проведения экспериментов с моделью. Рисунок получен из файла visualization.py. Поскольку файл содержит около 400 строк, вы можете посмотреть полный код здесь.

в. api_docs.py имеет функцию для создания объяснения того, как мы можем создать запрос для прогнозирования API. Вот API ссылка. код API_docs

д. project_explanation.py выполняет функции проектной документации. Полный код

е. load_data.py имеет функцию преобразования данных временных рядов. Полный код.

ф. visualization.py. Этот файл выполняет важную работу, поскольку он запускает логический процесс, такой как создание прогноза и рендеринга фигуры (графической фигуры). Полный код доступен здесь.

г. Целью index.py является создание базового макета и сопоставление каждого приложения (stats, predictive_analytics, project_explanation, api_docs) в виде панели навигации, а также запуск сервера.

час Целью app.py является создание экземпляра приложения Dash, которое будет использоваться в index.py.

чтобы запустить приложение, вы можете ввести это в терминале

E:\DATA SCIENCE\forecast_passenger_BI> python index.py

Обратный вызов Dash

Отличие Dash от других пакетов веб-приложений, таких как Streamlit, заключается в том, что Dash имеет концепцию обратного вызова. Согласно dash docs, обратный вызов — это функция, которая отслеживает изменение свойства dash (например, HTML-элемента dash) и в конечном итоге влияет на другой элемент/реквизит dash.

Как создать обратный вызов?

  1. создайте элемент dash и добавьте реквизит id в его элемент (подсказка: при создании className убедитесь, что он понятен)
  2. если вам нужен простой пример: посетите index.py выше

Развертывание

В моем случае я выбираю heroku для развертывания своего веб-приложения. шаг почти такой же, как и в моем предыдущем посте: Развертывание модели прогнозирования как API с помощью Fast API и Heroku (Timeseries End to End Project Part 3). Хотя в файле Procfile есть различие:

web: gunicorn index:server
# index -> refer to python file where server would be running 
#server = variable name where server is defined

Советы после завершения этого проекта:

  1. Создайте переменную как можно более понятной, кроме того, если у вас есть куча почти одинаковых обратных вызовов.
  2. Ожидая многократный вывод при обратном вызове dash, вы должны знать, что возврат зависит от того, как организован или расположен выходной аргумент. пример
@app.callback([Output(component_id='a',component_property='children'), Output(component_id='a',component_property='children')], Input(component_id='a',component_property='data') 
def update_value(input_data) : 
      #some logic 
      return to_a, to_b

Спасибо за внимание. Доступ к моему развернутому веб-приложению можно получить здесь.

Полная реализация кода доступна здесь.

Мой проект временных рядов Fullstack:

Часть 1: Прогнозирование временных рядов: пассажиры воздушного движения (Проект временных рядов от начала до конца, часть 1)

Часть 2: Создание информационной панели временных рядов с помощью Dash (проект временных рядов от начала до конца, часть 2)

Часть 3: Развертывание модели прогнозирования как API с помощью Fast API и Heroku (Проект временных рядов от начала до конца, часть 3)

Спасибо за внимание.

Спасибо за внимание . Вы можете связаться со мной в моем LinkedIn или вы можете пометить / разветвить / подписаться на мою учетную запись github здесь.