Всем привет! В этом блоге мы будем изучать методы линейной регрессии для прогнозирования цен на жилье с учетом нескольких отличительных характеристик в качестве входных данных. Для задачи мы будем использовать следующий набор данных kaggle: Ссылка на набор данных.

Набор данных поставляется в виде файла .csv, который был прочитан с помощью Pandas.

Пять первых пяти строк набора дат можно просмотреть здесь. Двигаясь вперед, мы разделим весь жизненный цикл этого проекта на следующие этапы.

  1. Исследовательский анализ данных и очистка данных.
  2. Особенности инженерии.
  3. Выбор модели, настройка гиперпараметров, подбор и оценка.
  4. Развертывание на 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 с небольшими изменениями.

До скорого!

Пока!