Проект регрессии науки о данных

Введение

Цены на жилье составляют основную часть годовых расходов. Большинство финансовых консультантов согласны с тем, что люди должны тратить не более 28 процентов своего валового ежемесячного дохода на расходы на жилье.

Например, в таких городах, как Лагос, Нигерия, большинство людей жалуются на высокую арендную плату и предпочитают покупать собственные дома, избегая арендной платы. Владельцы домов также жалуются на высокую стоимость содержания дома.

Для этого проекта по науке о данных мне не удалось получить достаточно данных о жилье в Лагосе, однако я нашел фантастический набор данных о жилье на Kaggle для жилья в Бангалоре.

Бангалор (также называемый Бангалор) — столица южного индийского штата Карнатака. Центр индустрии высоких технологий Индии, город также известен своими парками и ночными клубами. Лагос, Нигерия, также является домом для индустрии высоких технологий Нигерии.

Бизнес-задача

Знание цены дома перед покупкой или арендой помогает лучше составить финансовые планы и избежать ненужных долгов. Цены на дома завышены? Существует ли прямая зависимость между количеством спален и ценами на жилье в городе? Какие факторы больше всего влияют на цены на дома? На эти и другие вопросы я планирую ответить с помощью науки о данных.

Источники данных

Набор данных для этого анализа был получен от Kaggle. Данные хранились в формате csv, они структурированы, организованы по строкам и столбцам.

Ограничения

Этот набор данных предназначен только для жилья Бегалуру и не обязательно отражает то, что происходит в других городских городах.

Очистка данных и манипуляции

Python — это инструмент, который я выбрал для этого проекта. Библиотеки Pandas предоставляют эффективные инструменты очистки и визуализации для быстрого получения информации.

Первой поставленной задачей была загрузка необходимых библиотек.

Я скачал набор данных с kaggle. Этот CSV-файл содержит 13 320 строк и 9 столбцов. Столбцы: area_type, наличие, местоположение, размер, общество, total_sqft, ванная, балкон и цена.

Копаясь в колонке типа района, мы видим, что большинство районов суперзастроены, что типично для высокотехнологичного региона.

В этом наборе данных есть несколько столбцов, которые не нужны для проекта, мы бы их удалили.

В дальнейшем мы проверим набор данных на наличие пропущенных значений.

Поскольку эти отсутствующие фрагменты значительно малы (менее 100) по сравнению с размером набора данных, состоящего из 13 320 строк, мы обработаем так, чтобы удалить строки, содержащие отсутствующие значения.

После удаления этих отсутствующих значений мы заметили, что количество строк в наборе данных сократилось с 13 320 до 13 246.

Изучение столбца размера показывает небольшие несоответствия в именовании/маркировке. Мы заметили, что некоторые значения находятся в BHK, например, 2 BHK, 3 BHK, 4 BHK и т. д., а другие — в спальне, например, 2 спальни, 3 спальни, 4 спальни и т. д. Поиск значения BHK в Google помог мне понять, что BHK означает спальню, зал и кухня, поэтому 3 BHK, например, фактически означает, что в доме 3 спальни.

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

Новый столбец теперь содержит только числовые значения, что удобно для анализа.

df3.total_sqft.unique() Столбец total_sqft также имеет некоторые несоответствия. Некоторые значения даны в единицах, отличных от квадратных футов, а некоторые даны в виде диапазона. Числа, заданные в виде диапазона, преобразуются в среднее значение этого диапазона. Мы напишем функцию, которая улавливает значения, не являющиеся числами с плавающей запятой, и преобразует их в числа с плавающей запятой, где это возможно, иначе мы просто превратим значения в NaN.

df5 = df4.copy()
df5[‘price_per_sqft’] = df5[‘price’]*100000/df5[‘total_sqft’]
df5.head()

Создается новый столбец для получения цены за квадратный фут каждого дома. Цены указаны в лакхах, 1 лакх равен 100 000 рупий. Единицей для вычисляемого нового столбца является квадратный фут на рупию.

Чтобы уменьшить выбросы в размере дома по сравнению с размером комнаты, мы создадим функцию для исключения тех квартир, где размер дома в квадратных футах в 300 раз больше, чем размер спальни.

Данные имеют много выбросов, как показано на гистограмме ниже.

Была написана функция для удаления выбросов цены за квадратный фут.

Была построена точечная диаграмма, показывающая, как цена за квадратный фут изменяется в зависимости от общей площади квадратных футов двухкомнатных и трехкомнатных квартир.

Мы приступили к удалению квартир BHK, цена за квадратный фут которых меньше, чем средняя цена за квадратный фут квартиры с 1 BHK. Это действие уменьшило количество строк до 7 329.

Кроме того, мы проверили квартиры, в которых количество ванных комнат превышает количество комнат на 2 и более, после чего удалили их из набора данных. Этот процесс также является способом удаления некоторых выбросов.

Построить модель машинного обучения

Использование One Hot Encoding для определения местоположения.

Еще две строки были удалены, так как они не имеют отношения к проекту. столбец размера был удален, потому что он такой же, как столбец bhk, но состоит из строк и чисел. Цена за квадратный фут также была снижена, поскольку она была в основном создана для того, чтобы помочь выявить некоторые выбросы и впоследствии исключить их. В наборе данных теперь всего 5 столбцов: местоположение, общая площадь, ванна, цена и кв.

Значения местоположения были преобразованы в фиктивные переменные.

Столбец «другое» был удален.

Модель построили.

Модель линейной регрессии.

5 итераций показывают результат выше 77%. Это хороший показатель.

Затем мы определяем функцию для прогнозирования цены с использованием модели линейной регрессии.

Для модели было проведено несколько тестов.

Полный проект доступен здесь.

Спасибо.