Привет всем, меня зовут Нивитус. Добро пожаловать в руководство Прогнозирование цен на жилье в Бостоне. Это еще один блог по машинному обучению на сайте 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]
Вы можете позвонить мне по этому поводу.