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

Я взял набор данных из здесь. Вы можете скачать набор данных отсюда или найти его в моем репозитории Github.

Теперь давайте быстро проверим тип и особенности данных. Изображение, показанное ниже, представляет собой CSV-файл данных с именем housing.data.

Теперь давайте проверим особенности и что они собой представляют.

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

Итак, теперь давайте перейдем к кодированию.

Примечание. Здесь я использую Jupyter Notebook. Вы даже можете использовать Google Colab или любой другой идентификатор. Я постарался добавить комментарии во все ячейки, чтобы вы могли их легко понять. Если у вас все еще есть сомнения, вы можете связаться со мной по ссылкам, приведенным в конце этого блога.

Я разделил блог на 13 шагов. Для того, чтобы сделать вас все более ясным.

  1. Импортируйте необходимые библиотеки.
#Import Libraries
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

2. Загрузите набор данных CSV с именем переменной housing.

#Load Dataset in Notebook with variable name “housing”
housing = pd.read_csv(“Datasets/house.csv”)

3. Проверьте загруженный набор данных.

#printing first 5 datas of dataset
housing.head()

4. Проверьте информацию о наборе данных

#Printing info of Dataset
housing.info()

5. Проверка описания модели

#Describing dataset
housing.describe()

6. Построение гистограммы по данным.

# For plotting histogram
housing.hist(bins=50, figsize=(20, 15))

7. Теперь мы собираемся разделить набор данных на обучение и тестирование.

# Spliting Dataset in Training Dataset and Testing Dataset
from sklearn.model_selection import StratifiedShuffleSplit
split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
for train_index, test_index in split.split(housing, housing[‘CHAS’]):
 strat_train_set = housing.loc[train_index]
 strat_test_set = housing.loc[test_index]

8. Теперь давайте проверим взаимосвязь между функциями, доступными в наборах данных.

corr_matrix = housing.corr()
corr_matrix[‘MEDV’].sort_values(ascending=False)

Здесь вы можете заметить, что RM имеет положительную корреляцию, а LSTAT имеет сильную отрицательную корреляцию.

9. Теперь давайте сделаем что-нибудь для отсутствующих данных.

# Using SimpleImputer to handle missing data
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy=”median”)
imputer.fit(housing)

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

10. Теперь давайте создадим конвейер

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
my_pipeline = Pipeline([
 (‘imputer’, SimpleImputer(strategy=”median”)),
 # ….. add as many as you want in your pipeline
 (‘std_scaler’, StandardScaler()),
])
housing_num_tr = my_pipeline.fit_transform(housing)

11. Теперь давайте импортируем RandomForestRegressor и поместим его в наш набор данных.

from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor()
model.fit(housing_num_tr, housing_labels)

12. Сохранение модели.

from joblib import dump, load
dump(model, ‘Dragon.joblib’)

13. Загрузка модели и прогнозирование вывода.

Ввод - [-5.43942006, 4.12628155, -1.6165014, -0.67288841, -1.42288847, -1.42262747,
-11.44443979304, -443979304, 7.61111401, -26.0016879, -0.5778192,
-0.97491834, 0.41164221, -66.86091034]

Это в основном вход модели с 13 функциями.

Примечание. Всегда вводите данные в модель в той же последовательности, что и во время обучения модели.

from joblib import dump, load
import numpy as np
model = load(‘Dragon.joblib’) 
features = np.array([[-5.43942006, 4.12628155, -1.6165014, -0.67288841, -1.42262747,
 -11.44443979304, -49.31238772, 7.61111401, -26.0016879 , -0.5778192 ,
 -0.97491834, 0.41164221, -66.86091034]])
model.predict(features)

ВЫВОД

Здесь наша модель предсказала цену $24,167. Я знаю, что невозможно купить дом по такой цене. Но мы использовали случайные данные для прогнозирования. Так что не обращайте особого внимания на прогнозируемую цену. Вместо того, чтобы пытаться запустить эту модель на нашей машине и дать точный и содержательный ввод в модель.

И вы можете поделиться своими выводами в разделе ответов/комментариев ниже.

Теперь поговорим о точности модели.

Оценка модели составляет около 63%, но это совсем неплохо, потому что мы использовали очень маленький набор данных. Он содержит только 506 данных для каждой функции.

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

Вы также можете попробовать другие алгоритмы и прокомментировать свою точность.

Загрузите исходный код и набор данных здесь.

Надеюсь, вам понравился этот блог. Не стесняйтесь делиться своими мыслями в разделе комментариев, и вы также можете связаться со мной в моих социальных сетях.
Linkedin — https://www.linkedin.com/in/shreyak007 /
Github — https://github.com/Shreyakkk
Twitter — https://twitter.com/Shreyakkkk
Instagram — https://www.instagram .com/shreyakkk/
Snapchat — shreyak001
Facebook — https://www.facebook.com/007shreyak

Спасибо!