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

Полную статью с исходным кодом читайте здесь —https://machinelearningprojects.net/house-tax-prediction/

Давай сделаем это…

Шаг 1 — Импорт необходимых пакетов.

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score

%matplotlib inline

Шаг 2 — Чтение наших данных.

data = pd.read_csv(‘HousingData.csv’)
data.head()

Шаг 3 — Опишите наши данные.

data.describe()

Шаг 4 — Проверьте информацию о наших данных.

data.info()
  • Как мы видим ниже, есть 4 5 столбцов, которые не имеют значений 506, что означает, что в них есть нулевые значения.
  • Вот почему нам нужно заполнить эти нулевые значения, чтобы все столбцы были одинакового размера.

Шаг 5 — Заполнение нулевых значений.

col = ['CRIM','ZN','INDUS','CHAS','AGE','LSTAT']
for c in col:
    data[c].fillna(data[c].mean(),inplace=True)
  • Здесь мы просто заполняем нулевые поля средним значением этого столбца.
  • Мы передали inplace=True, потому что хотим внести это изменение в исходный набор данных.

Шаг 6 — Теперь снова проверяем информацию о наших данных.

data.info()
  • Ниже мы видим, что теперь все столбцы имеют 506 ненулевых значений.
  • Это очень важный шаг в предварительной обработке данных. Мы должны либо удалить записи с нулевыми значениями, либо заполнить их некоторым значением по умолчанию, либо мы также можем заполнить их средним значением, как мы сделали в этом случае.

Шаг 7 — Проверьте корреляцию нашего целевого поля «НАЛОГ» с другими функциями.

data.corr()[‘TAX’].sort_values(ascending=False)
  • Здесь мы просто проверяем корреляцию нашего целевого столбца «НАЛОГ» с другими столбцами.
  • Мы видим, что он имеет самую высокую корреляцию со столбцом «RAD». Это означает, что значение TAX прямо пропорционально значению RAD.

Шаг 8 — Предварительная обработка наших данных.

from sklearn.preprocessing import StandardScaler

X = data.drop('TAX',axis=1)
y = data['TAX']

scaler = StandardScaler()
X = scaler.fit_transform(X)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
  • Мы создаем X, который является нашими функциями/всеми столбцами, кроме столбца ярлыков/НАЛОГА.
  • Мы создаем y, который является просто столбцом TAX.
  • Мы масштабируем данные X, используя Standard Scaler, чтобы привести все к одному и тому же масштабу [0–1].
  • Затем мы просто разбиваем наши данные в пропорциях 70–30 для данных обучения и тестирования соответственно, используя train-test-split.

Шаг 9 — Обучение нашей модели прогнозирования налога на дом.

from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import GridSearchCV

rfc = RandomForestRegressor()
params = {'n_estimators':[100,200,300,400,500,600,700,800,900,1000]}

grid_model = GridSearchCV(rfc, params,verbose=2)
grid_model.fit(X_train,y_train)

pred = grid_model.predict(X_test)

print('Random Forest accuracy is --> ',r2_score(y_test,pred)*100)

Шаг 10. Проверка лучших параметров модели прогнозирования налога на недвижимость.

grid_model.best_params_
  • Используя Grid Search CV, мы узнали, что лучшим значением для n_estimator будет 700.

Шаг 11 — Просто наблюдайте за результатами.

res = pd.DataFrame()
res['Y_Test'] = y_test
res['PRED'] = pred
res.head()
  • Простой шаг, на котором мы видим, каков наш прогноз и каким он должен быть.

Шаг 12 — Составление результатов прогнозирования налога на жилье.

sns.scatterplot(y_test,pred)
plt.xlabel(‘real values’)
plt.ylabel(‘predicted values’)

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

Чтобы узнать больше о машинном обучении, глубоком обучении, компьютерном зрении, НЛП и проектах Flask, посетите мой блог.



Для дальнейшего объяснения кода и исходного кода посетите здесь



Итак, это все для этого блога, ребята, спасибо за то, что прочитали его, и я надеюсь, что вы возьмете что-то с собой после прочтения этого и до следующего раза 👋…