Всем привет! В этом блоге мы будем изучать методы линейной регрессии для прогнозирования цен на жилье с учетом нескольких отличительных характеристик в качестве входных данных. Для задачи мы будем использовать следующий набор данных kaggle: Ссылка на набор данных.
Набор данных поставляется в виде файла .csv, который был прочитан с помощью Pandas.
Пять первых пяти строк набора дат можно просмотреть здесь. Двигаясь вперед, мы разделим весь жизненный цикл этого проекта на следующие этапы.
- Исследовательский анализ данных и очистка данных.
- Особенности инженерии.
- Выбор модели, настройка гиперпараметров, подбор и оценка.
- Развертывание на Heroku.
1. Исследовательский анализ данных и очистка данных.
На этом этапе мы рассчитали следующие показатели для преобразования набора данных с помощью EDA.
а. Процент отсутствующих значений в наборе дат, за которым следует удаление столбца с наибольшим количеством отсутствующих значений.
б. Асимметрия и эксцесс характеристик фрейма данных с последующим соответствующим преобразованием, чтобы сделать распределение ближе к нормальному (гауссовскому). Например: поскольку значение эксцесса цены было очень высоким, поэтому мы уменьшили его, преобразовав цену в логарифмическую шкалу.
После этого мы очистили наши данные, разделив данные, содержащиеся в столбце size, на два отдельных столбца функций(BHK_size и Bed_size) во фрейме данных и заполнив пустые строки 0, используя наполнить (предмет). Точно так же характеристики в таких столбцах, как наличие, ванна и общая площадь, были преобразованы в соответствующие категориальные и числовые формы. Обработанный кадр данных можно просмотреть здесь, в ячейке 40.
Затем данные были разделены на набор поездов и тестов.
2. Разработка функций
На этом этапе мы изучили возможность использования шагов стандартизации и нормализации данных. Мы использовали Standard Scaler от sklearn для преобразования входных функций обучения и тестирования. То же самое можно посмотреть в Cell 46
3. Выбор модели, настройка гиперпараметров, подгонка и оценка.
Поскольку мы намерены в первую очередь изучить методы линейной регрессии с регуляризацией (Лассо и Ридж), мы ограничили этап выбора модели простой линейной регрессией, Лассо, Риджем, подкрепленным экспериментами с полиномиальными функциями. Мы подогнали эти модели с настройкой гиперпараметров и без нее на наборе поездов и оценили на тестовом наборе. Результат которого можно просмотреть в ячейках 47–69. Можно свободно запускать настройку гиперпараметров на большем пространстве выборок ridge__alpha и lasso__alpha для повышения точности. В наших ограниченных экспериментах и оценках мы сохранили модель с лучшим результатом в виде файла .pkl.
4. Развертывание на Heroku.
Подогнанная модель была предоставлена в Интернете для прогнозирования в виде микросервиса на основе flask-webapp на Heroku. Исходный код которого можно посмотреть по ссылке.
Не стесняйтесь экспериментировать с исходным кодом. Вы можете легко заменить Flask через FastAPI в app.py с небольшими изменениями.
До скорого!
Пока!