Программирование

Прогноз задержки рейса

Комплексный проект

Введение

Flight Delay Prediction — один из самых обсуждаемых проектов на Kaggle. В этой статье я собираюсь объяснить, как мне удалось провести некоторый анализ всего набора данных прогнозирования задержки рейса. После этого я выполнил некоторые шаги предварительной обработки, такие как очистка данных, замена нулевых значений, а затем выполнение нормализации там, где это необходимо. Позже данные были разделены на обучающие и тестовые наборы, и мы построили модель дерева решений. Мы получили около 99,9% точности с моделью. После того, как модель была построена, мы создали статическую страницу с помощью HTML, чтобы получить информацию от пользователя, и в то же время мы использовали модель, обученную для получения результата о том, будет ли рейс задержан или нет, на основе входных функций. Мы использовали Flask для интеграции статических страниц с моделью для отображения пользователю результата прогнозирования задержки рейса.

Импорт библиотек

Анализ начинаем с импорта необходимых библиотек для построения модели.

Наборы данных

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

Второй набор данных состоит из сведений об аэропорте, таких как местоположение аэропорта, штат и город.

Третий набор данных состоит из сведений об авиакомпаниях.

Далее я решил найти расположение различных аэропортов на картах Google. Поэтому я использовал gmplot для определения местоположения аэропортов на основе значений долготы и широты. На изображении ниже я не использовал Google API, поэтому он не загрузился правильно. Можно погуглить и найти способы использования API и интеграции с gmplot.

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

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

Очистка данных

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

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

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

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

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

Создание модели

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

Настройка гиперпараметров

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

Сохранение модели

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

Создание статических HTML-шаблонов

Мы создаем папку шаблонов, состоящую из двух файлов HTML. Одна из них — это страница, на которой отображаются поля, отправленные пользователем в качестве входных данных. Другая страница — это страница Results.html, которая содержит результат, полученный на основе выходных данных модели.

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

HTML-страница результатов выглядит так, как показано ниже:

Интеграция модели и шаблонов с помощью Flask

Мы используем флягу для интеграции HTML-шаблонов с моделью в бэкенде. Значения, которые принимаются в качестве входных данных от пользователя, перенаправляются с помощью метода POST во Flask в модель. Затем модель сгенерирует вывод и передаст его в качестве входного значения на HTML-страницу результатов. Метод GET вызовет шаблон результатов и отправит прогноз, полученный на основе выходных данных модели.

Спасибо за прочтение статьи!!

Ссылка на гитхаб



LinkedIn