- Удалил дубликаты, пропуски во всех столбцах (и на трейн и на тест) заполнил медианами соответствующих столбцов из train.
- Убрал единицы измерения у max_power, mileage, engine, преобразовал их к int и float. Также удалил столбце torque.
- Реализовал визуализацию полученных данных с использованием seaborn. В частности отобразил heatMap и pairplot для поиска корреляций в данных.
- Изначально попробовал обучить модель на классической линейной регрессии. Результат - R2 на тестовых данных = 0.5941
- С помощью StandartScaler стандартизировал датасет, обучил модель с помощью Lasso-регрессии в паре с GridSearchCV (с 10 фолдами) на стандартизированных данных. Лучший коэфициент 30000 при 100 итерациях, 3 веса занулились (из-за L1-регуляризации). Результат - R2 на тесте = 0.5608
- Обучил ElasticNet модель (которая использует и L1, и L2 регуляризацию) с помощью GridSearchCV. Результат - R2 на тесте = 0.5722
- Использовал One-Hot кодирование для 'fuel', 'seller_type', 'transmission', 'owner', 'seats'.
- С помощью Ridge (регрессия с L2-регуляризацией) в паре с GridSearchCV (с 10 фолдами) обучил модель. Результат - R2 на тесте = 0.6393
Не хватило сил и времени для этого пункта:( Из идей - можно было бы использовать бренд автомобиля и torque (С onehot кодированием)
- Реализовал два post-метода
- Перенес код сервиса в отдельный файл
- Протестировал данный сервис с помощью Postman
Ниже представлены скрины запросов и ответов
- HW1_Regression_with_inference.ipynb - Ноутбук с проделанной работой
- server.py - сервис с реализацией FastAPI
- col.pickle - сериализованные колонки датасета
- model.pickle - сериализованная модель (GridSearch + Feature Engineering)
- cars_test.csv - датасет для валидации
- cars_train.csv - датасет для трейна
- README.MD
- License
- Screens
- Наилучший результат дал Ridge