Библиотека pandas в Python полна полезностей, которые позволяют человеку манипулировать данными, чтобы подготовить их к предсказанию. Одной из таких функций является команда слияния, которая позволяет объединить два набора данных в один с помощью общего столбца или индекса.

Документацию pandas, описывающую команду слияния, можно найти по следующей ссылке: - https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html

Чтобы понять, как работает команда слияния, рекомендуется попрактиковаться в использовании этой функции. Поэтому я выбрал вопрос о конкурсе на сайте Analytics Vidhya о прогнозировании будущего спроса на продукты питания. Этот конкурс можно найти по адресу: - https://datahack.analyticsvidhya.com/contest/genpact-machine-learning-hackathon-1/#MySubmissions

Выдержки из постановки задачи:

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

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

Исторические данные о спросе на комбинацию продуктового центра (недели: с 1 по 145) Характеристики продукта (еды), такие как категория, подкатегория, текущая цена и скидка. Информация для центра выполнения заказов, такая как площадь центра, информация о городе и т. Д. »

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

Затем я объединил набор данных поезда с фулфилментом и обедом, создав один большой набор данных как для файла поезда, так и для тестового файла:

Я проверил любые нулевые значения, и в этом случае их не было. Затем я использовал OrdinalEncoder () для преобразования столбцов объекта в числовые значения: -

Затем я определил значения X, y и X_test и разделил поезд, настроенный для целей обучения и проверки. Я также масштабировал независимые переменные, убедившись, что я соответствую только набору данных X_train: -

Компания In решила выбрать наиболее подходящую модель для использования, поэтому заранее протестировала несколько моделей. Я попытался протестировать AdaBoostingRegressor, но мне удалось только вывести компьютер из строя. У меня есть только Chromebook, так что я вполне мог бы получить лучшие результаты, если бы у меня был более мощный компьютер:

Я решил использовать HistGradientBoostingRegressor () в качестве модели, потому что оценка, полученная мною в средстве проверки решений Analytics Vidhya, была немного выше, чем у XGBRegressor: -

Я подготовил прогнозы для отправки и использовал средство проверки решений на сайте Analytics Vidhya. Я набрал 82,21 балла, при этом лучший результат в таблице лидеров составил 47,67. Очевидно, что эта практическая задача требует дополнительной работы, поэтому следите за этим пространством: -

Код этого сообщения в блоге можно полностью найти в моей учетной записи github, ссылка находится ниже: - https://github.com/TracyRenee61/Misc-Predictions/blob/main/Food_Demand_HistGradientBoosrRegressor.ipynb