Skip to content

denis-42ds/decoding_vin_codes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Название проекта: Прогнозирование цены автомобиля по VIN-коду

Заказчик: самостоятельное исследование

Статус проекта: завершён

Описание рабочих файлов:

  • decoding_vin_codes.ipynb - рабочая тетрадь с исследованиями, визуализациями и текстовыми описаниями
  • requirements.txt - список зависимостей, необходимых для работы проекта, а также их версии
  • research_class.py - файл, содержащий класс для проведения исследования
  • assets - директория с сохранёнными артефактами

Установка зависимостей и запуск проекта

git clone https://github.com/denis-42ds/decoding_vin_codes.git
cd decoding_vin_codes
pip install -r requirements.txt
jupyter lab

Описание проекта

Изучение информации, зашифрованной в VIN-кодах с целью прогнозирования цены.

Цель проекта

  • Составление прогноза цен на основании информации скрытой в VIN-кодах.

Задачи

  • изучить структуру VIN-кода: какие информационные компоненты он содержит (регион, производитель, характеристики автомобиля и т. д.);
  • составлять регулярные выражения для поиска и извлечения конкретных частей VIN-кода, таких как производитель, модель и год выпуска;
  • распарсить текстовый массив данных с VIN-кодами и ценами;
  • решить задачу предсказания цены по VIN-коду.

Метрики

  • MSE, MAE, MAPE, R2

Ход исследования

  • Ознакомление с данными;
  • ознакомление со способами кодирования данных в VIN-кодах;
  • составление паттерна для парсинга VIN-кодов;
  • проверка работоспособности паттерна;
  • парсинг VIN-кодов;
  • подготовка данных для модели;
  • обучение baseline модели;
  • обучение других моделей;
  • выбор лучшей модели;
  • проверка важности признаков;
  • заключение по исследованию.

Основные используемые инструменты

  • python: re, pandas, seaborn, psycopg2-binary, phik, catboost, shap, sklearn;
  • mlflow;
  • postgresql.

Отчёт по проведённому исследованию

Загрузка данных и ознакомление с ними

Выполнено

  • данные загружены и изучены;
  • составлено общее представление о необходимых действяих для обработки.

Подготовка паттерна для парсинга данных

Выполнено

  • паттерн подготовлен и протестирован.

Исследовательский анализ данных

Выполнено

  • исследованы общие параметры датафрейма, наличие дубликатов, типы признаков;
  • исследована целевая переменная;
  • изучены зависимости между признаками.

Подготовка данных для обучения моделей

Выполнено

  • произведено разделение данных на обучающую и тестовую выборки;
  • признаки в выборках закодированы и масштабированы.

Обучение моделей

Выполнено

Обучены и оценены модели:

  • Linear Regression без подбора гиперпараметров - в качестве baseline;
  • Linear Regression с подбором гиперпараметров GridSearch;
  • Random Forest Regressor с подбором гиперпараметров GridSearch;
  • CatBoost Regressor с подбором гиперпараметров GridSearch.

Выбор лучшей модели

Выполнено

  • по метрике MSE лучший результат на валидации показала модель CatBoost Regressor

Тестирование модели

Выполнено

  • проверка на тестовой выборке показала адекватность обучения модели

Анализ важности признаков лучшей модели

Выполнено

Наиболее важными признаками для прогнозирования цены выделены:

  • год производства автомобиля;
  • завод-производитель автомобиля;
  • кузов автомобиля

Дополнительно

  • поднята база PostgreSQL для хранения метрик и параметров моделей;
  • поднят MLflow server для логирования моделей, параметров и метрик.

Общий итог: для выполнения поставленной задачи наиболее подходящей моделью оказалась модель градиентного бустинга CatBoost

About

deciphering car VIN codes using regular expressions

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published