Создавайте несколько приложений с навигацией/вкладками с тире и графикой.
В этом руководстве не будет объясняться построчный код, а будет даваться только промежуточный обзор этого проекта.
Изюминкой этого урока будет:
- Концепция обратного вызова Dash
- Развернуть на Heroku
- Советы
Структура проекта
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.
Как создать обратный вызов?
- создайте элемент dash и добавьте реквизит id в его элемент (подсказка: при создании className убедитесь, что он понятен)
- если вам нужен простой пример: посетите 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
Советы после завершения этого проекта:
- Создайте переменную как можно более понятной, кроме того, если у вас есть куча почти одинаковых обратных вызовов.
- Ожидая многократный вывод при обратном вызове 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:
Спасибо за внимание.
Спасибо за внимание . Вы можете связаться со мной в моем LinkedIn или вы можете пометить / разветвить / подписаться на мою учетную запись github здесь.