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

Я наткнулся на этот набор данных на Kaggle во время Kaggling (подмигнул), и я подумал про себя, почему бы не создать что-нибудь с этим, чтобы улучшить свои знания о машинном обучении, поэтому я начал, и вот как это произошло.

Изучение данных

Чтобы работать с набором данных, вам нужно загрузить и понять его, и здесь на помощь приходит пакет python Pandas. Чтение набора данных CSV в python с помощью pandas так же просто, как data= pd.read_csv ('имя файла.csv'). Когда набор данных прочитан, он выглядит следующим образом

Некоторые другие функции исследования данных pandas, которые я использовал в этом проекте, включают info(), describe(), isnull(). К счастью для меня, набор данных был чистым, поэтому мне не пришлось выполнять какую-либо обработку отсутствующих данных и многое другое, что довольно просто, так что не пугайтесь.

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

Визуализация данных

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

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

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

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

Выше вы можете увидеть конечный продукт предварительно обработанных данных, которые затем будут разделены на наборы для обучения и тестирования для моделей. Заметили, как изменилась таблица? Столбцы расширились, каждая уникальная строка из предыдущих категориальных столбцов теперь разделена на отдельные столбцы, и 1 означает да/верно, а 0 — нет/ложь. Чтобы увидеть, как это было сделано, посетите репозиторий GitHub, а чтобы понять, какие фиктивные данные Pandas лучше, посетите pd.get_dummies().

Модель (обучение и прогнозирование)

Выше приведен фрагмент кода, используемого для обучения модели линейной регрессии, и вы можете видеть в нижней части изображения прогнозные оценки моделей по обучающим и тестовым данным соответственно, которые составляют 91,1% и 91,2%, что является хорошими оценками и нет. слишком далеко друг от друга, поэтому мы можем сказать, что наша модель не слишком подходит, но, конечно же, я могу получить лучшие результаты, поэтому я пошел дальше и подогнал данные к модели XGBoost.

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

Как всегда, не стесняйтесь проверять остальную часть исходного кода для более глубокого понимания работы. Следите за другими статьями о DataScience, оставляйте комментарии и ставьте лайки, если вам понравилось чтение.

Спасибо и увидимся в другой раз.