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

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

Содержание:

· Обзор

· Мотивация

· Понять формулировку проблемы

· О наборе данных.

· Об алгоритмах, используемых в

· Сбор данных

· Предварительная обработка данных

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

· Наблюдение за особенностями

· Выбор функций

· Построение модели

· Модельные выступления

· Прогноз и окончательный результат

· Вывод

Обзор

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

Мотивация

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

Понять формулировку проблемы

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

О наборе данных

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

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

Обзор данных

1. ПРЕСТУПНОСТЬ на уровень преступности, уплаченной по городам.

2. ZN доля земли под жилую застройку, зонированная на участки площадью более 25 000 кв. Футов.

3. ПРОМЫШЛЕННОСТЬ: доля акров, не относящихся к розничной торговле, на город.

4. CHAS фиктивная переменная реки Чарльз (= 1, если участок граничит с рекой; 0 в противном случае)

5. Концентрация оксидов азота NOX (частей на 10 миллионов).

6. RM среднее количество комнат в доме.

7. ВОЗРАСТ: доля домов, построенных до 1940 года, занимаемых владельцами.

8. DIS взвешенное расстояние до пяти бостонских центров занятости.

9. Индекс доступности радиальных магистралей RAD.

10. НАЛОГ: полная ставка налога на имущество за каждые 10 000 долларов США.

11. Соотношение учеников и учителей PTRATIO по городам

12. Черный 1000 (Bk - 0,63) ², где Bk - доля черных по городам.

13. LSTAT% более низкий статус населения.

Об алгоритмах, используемых в

Основная цель этого проекта - прогнозировать цены на жилье на основе характеристик с использованием некоторых методов и алгоритмов регрессии.

1. Линейная регрессия

2. Регрессор случайного леса

В этом проекте используются пакеты машинного обучения

Сбор данных

Я получил набор данных от Kaggle. Этот набор данных состоит из нескольких функций, таких как количество комнат, уровень преступности, налоги и так далее. Давайте узнаем, как прочитать набор данных в Jupyter Notebook. Вы можете скачать набор данных из Kaggle в формате csv.

Также мы можем получить набор данных из наборов данных sklearn. Ага! Он доступен в sklearn Dataset.

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

from sklearn.datasets import load_boston
X, y = load_boston(return_X_y=True)

Код для сбора данных из CSV-файла в Jupyter Notebook!

# Import libraries
import numpy as np
import pandas as pd
# Import the dataset
df = pd.read_csv(“train.csv”)
df.head()

Предварительная обработка данных

В этом бостонском наборе данных нам не нужно очищать данные. Набор данных уже очищен при загрузке с Kaggle. Для вашего удовлетворения я покажу количество нулевых или отсутствующих значений в наборе данных. Также нам нужно понимать форму набора данных.

# Shape of dataset
print(“Shape of Training dataset:”, df.shape)
Shape of Training dataset: (333, 15)
# Checking null values for training dataset
df.isnull().sum()

Примечание. Целевая переменная - это последняя переменная, которая называется medv. Чтобы не было путаницы, я просто переименовал функцию medv в Цена.

# Here lets change ‘medv’ column name to ‘Price’
df.rename(columns={‘medv’:’Price’}, inplace=True)

Ага! Посмотрите, что изменилось название функции или столбца!

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

В статистике исследовательский анализ данных (EDA) - это подход к анализу наборов данных для обобщения их основных характеристик, часто с использованием визуальных методов. Статистическая модель может использоваться или нет, но в первую очередь EDA предназначена для того, чтобы увидеть, что данные могут сказать нам, помимо формального моделирования или задачи проверки гипотез.

# Information about the dataset features
df.info()

# Describe
df.describe()

Наблюдение за функцией

# Finding out the correlation between the features
corr = df.corr()
corr.shape

Во-первых, понимание корреляции функций между целевым объектом и другими функциями

# Plotting the heatmap of correlation between features
plt.figure(figsize=(14,14))
sns.heatmap(corr, cbar=False, square= True, fmt=’.2%’, annot=True, cmap=’Greens’)

# Checking the null values using heatmap
# There is any null values are occupyed here
sns.heatmap(df.isnull(),yticklabels=False,cbar=False,cmap=’viridis’)

Примечание. Здесь нет нулевых или пропущенных значений.

sns.set_style(‘whitegrid’)
sns.countplot(x=’rad’,data=df)

sns.set_style(‘whitegrid’)
sns.countplot(x=’chas’,data=df)

sns.set_style(‘whitegrid’)
sns.countplot(x=’chas’,hue=’rad’,data=df,palette=’RdBu_r’)

sns.distplot(df[‘age’].dropna(),kde=False,color=’darkred’,bins=40)

sns.distplot(df[‘crim’].dropna(),kde=False,color=’darkorange’,bins=40)

sns.distplot(df[‘rm’].dropna(),kde=False,color=’darkblue’,bins=40)

Выбор функций

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

# Lets try to understand which are important feature for this dataset
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
X = df.iloc[:,0:13] #independent columns
y = df.iloc[:,-1] #target column i.e price range

Примечание: если мы хотим определить лучшие функции для целевых переменных. Мы должны убедиться, что целевая переменная должна быть int Values. Вот почему я конвертирую в значение int из значения с плавающей запятой

y = np.round(df[‘Price’])
#Apply SelectKBest class to extract top 5 best features
bestfeatures = SelectKBest(score_func=chi2, k=5)
fit = bestfeatures.fit(X,y)
dfscores = pd.DataFrame(fit.scores_)
dfcolumns = pd.DataFrame(X.columns)
# Concat two dataframes for better visualization
featureScores = pd.concat([dfcolumns,dfscores],axis=1)
featureScores.columns = [‘Specs’,’Score’] #naming the dataframe columns
featureScores

print(featureScores.nlargest(5,’Score’)) #print 5 best features

Index-Specs- Оценка

9 - налоговая -9441.032032

1- zn- 4193.279045

0 -крим- 3251.396750

11- черный -2440.426651

6 лет -1659.128989

Важность функции

from sklearn.ensemble import ExtraTreesClassifier
import matplotlib.pyplot as plt
model = ExtraTreesClassifier()
model.fit(X,y)

print(model.feature_importances_) #use inbuilt class feature_importances of tree based classifiers

[0.11621392 0.02557494 0.03896227 0.01412571 0.07957026 0.12947365

0.11289525 0.10574315 0.04032395 0.05298918 0.04505287 0.10469546

0.13437938]

# Plot graph of feature importances for better visualization
feat_importances = pd.Series(model.feature_importances_, index=X.columns)
feat_importances.nlargest(10).plot(kind=’barh’)
plt.show()

Подгонка модели

Линейная регрессия

Регрессор случайного леса

Прогноз и окончательный результат:

Наконец-то мы сделали это !!!

Линейная регрессия

Оценка модели: точность 73,1%

Точность обучения: 72,9% точность

Точность тестирования: точность 73,1%

Регрессор случайного леса

Точность обучения: 99,9% точность.

Точность тестирования: точность 99,8%

Результат и заключение

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

Я надеюсь, что всем вам понравится этот блог. Если вы хотите рассказать больше в этом блоге, просто свяжитесь со мной. Я просто ищу стажировку в области науки о данных. Я действительно увлечен Data Science Field. Итак, если вы хотите меня нанять. Обратите внимание на это…

Имя: Nivitus

Номер мобильного телефона: 9994268967

Электронная почта: [email protected]

Вы можете позвонить мне по этому поводу.