В данном репозитории реализованы базовые алгоритмы машинного обучения в рамках трека ML YADRO 2025. Работа выполнена на реальном датасете продаж кофе и посвящена задаче регрессии.
- Описание проекта
- Датасет
- Среда и инструменты
- Структура репозитория
- Постановка задачи
- Основные этапы работы
- Используемые модели и результаты
- Сравнение методов
- Общие выводы и ограничения
Цель проекта — построение и сравнение базовых моделей машинного обучения для предсказания стоимости продукта на основе категориальных признаков. В качестве объекта исследования используется датасет продаж кофе.
Источник данных: https://www.kaggle.com/datasets/tan5577/coffee-sales-csv
Датасет содержит информацию о продажах кофе, включая:
- название напитка,
- стоимость,
- дату и время покупки,
- день недели и месяц.
Размер данных: 3547 наблюдений, 11 признаков.
Язык: Python Среда выполнения: Google Colab
Основные библиотеки:
numpypandasmatplotlibseabornscikit-learn
Source.ipynb
Первая лабораторная работа. Полный цикл анализа данных, обучения и сравнения моделей.
SourceDecemberUpdate.ipynb (в разработке)
Обновлённая версия работы на том же датасете с изменённым техническим заданием и подходами к анализу.
Далее для удобства каждый пункт будет подразбит на 2 подпункта:
- Подпункт 1 для
Source.ipynb - Подпункт 2 для
SourceDecemberUpdate.ipynb
Задача регрессии.
Необходимо предсказать стоимость кофе (money) на основе:
- названия напитка (
coffee_name); - месяца покупки (
Month_name).
Ограничения:
- Для исключения "хардкодинга" запрещено использование прямого поиска значений по справочнику;
- модель должна выявлять закономерности в данных;
- целевая точность — выше 90%.
- Данные загружаются из CSV-файла
- Пропущенные значения отсутствуют
- Категориальные признаки приведены к типу category
- Признак cash_type удалён из-за отсутствия вариативности
Проведена визуализация:
- зависимости цены от месяца;
- популярности напитков по месяцам;
- распределения цен по типам кофе;
- корреляционной матрицы числовых признаков.
Удалось выявить:
- наличие сезонности;
- слабая линейная корреляция между признаками;
- ключевая роль признака coffee_name.
Обработка признаков
- Категориальные признаки закодированы числовыми маппингами(часть категориальных признаков можно было не переводить, поскольку в датасете были числовые аналоги, что было замечено слишком поздно
- Данные нормализованы для моделей, чувствительных к масштабу
- Выполнено разбиение на обучающую и тестовую выборки в пропорции 3:1
- R² на тестовой выборке: около 0.5%
- Модель не улавливает зависимости в данных
- Используется как пример неподходящего выбора алгоритма
-
R² на обучающей выборке: 97.98%
-
R² на тестовой выборке: 97.64%
-
Наиболее точная модель в рамках работы
-
Анализ важности признаков:
- coffee_name — около 89%
- Month_name — около 11%
-
Подбор параметра k выполнен экспериментально
- Лучший результат при k = 10
- R² на тестовой выборке: около 97.5%
-
Результат сопоставим с Random Forest (незначительно ниже на текущих данных (~0.14%))
| Модель | R² (test) |
|---|---|
| Linear Regression | ~0.005 |
| KNeighborsRegressor (k = 10) | ~0.975 |
| RandomForestRegressor | ~0.976 |
RandomForestRegressor показал наилучший результат, однако правильно настроенный KNN даёт близкую по качеству модель.
- Получена высокая точность предсказания (97.64%)
- Качество модели в наибольшей степени зависит от выбора признаков
- Избыточное количество признаков приводит к шуму и риску переобучения
- Неподходящий алгоритм может давать результат хуже случайного угадывания
Практическое применение модели:
- анализ сезонности и ценовой политики;
- выявление аномалий в системе учёта;
- поддержка аналитических и управленческих решений.
Ограничения:
- модель не предназначена для долгосрочного прогнозирования без переобучения;
- при появлении новых данных требуется повторное обучение.