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

import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense, Flatten
from sklearn import preprocessing

(X_train, Y_train), (X_test, Y_test) = keras.datasets.boston_housing.load_data()

print("Training data shape:", X_train.shape)
print("Test data shape:", X_test.shape)
print("Train output data shape:", Y_train.shape)
print("Actual Test output data shape:", Y_test.shape)

X_train[0]

Y_train[0]

Y_train

##Normalize the data

X_train=preprocessing.normalize(X_train)

X_train

X_train[0]

X_train[1]

X_test=preprocessing.normalize(X_test)

X_test

X_test[0]

Y_test[0]

Model Building

X_train[0].shape

model = Sequential()
model.add(Dense(128,activation='relu',input_shape= X_train[0].shape))
model.add(Dense(64,activation='relu'))
model.add(Dense(32,activation='relu'))
model.add(Dense(1))

model.summary()

model.compile(loss='mse',optimizer='rmsprop',metrics=['mae'])

history = model.fit(X_train,Y_train,epochs=100,batch_size=1,verbose=1,validation_data=(X_test,Y_test))



#test_input=[(0.02675675,0.00000000,0.026779,0.0000000,0.0010046,0.00951931,0.14795322,0.0027145,0.03550877,0.98536841,0.02988655,0.04031725,0.04298041)]
test_input=[(0.0024119 , 0.        , 0.01592969, 0.        , 0.00105285,
       0.01201967, 0.17945359, 0.00778265, 0.00782786, 0.6007879 ,
       0.04109624, 0.77671895, 0.03663436)]
print("Actual output:15.2")
print("Predicted Output:",model.predict(test_input))




test_input=[(4.07923050e-05, 1.54587284e-01, 3.80378407e-03, 0.00000000e+00,
       7.77620881e-04, 1.42595058e-02, 2.94184285e-02, 1.17486336e-02,
       3.74757051e-03, 6.52077269e-01, 2.75446433e-02, 7.40857215e-01,
       5.82747215e-03)]
print("Actual output:42.3")
print("Predicted Output:",model.predict(test_input))


y_pred=model.predict(X_test)

y_pred

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

Импорт библиотек и загрузка набора данных. Для начала нам нужно импортировать необходимые библиотеки, такие как NumPy, Pandas, Matplotlib и Scikit-learn. Кроме того, мы загрузим набор данных прогнозирования цен на жилье в Бостоне, используя встроенную функцию Scikit-learn.

import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense, Flatten
from sklearn import preprocessing

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

Построение модели линейной регрессии. Мы реализуем модель линейной регрессии с использованием глубокой нейронной сети. Хотя линейная регрессия традиционно является линейной моделью, вводя нейронные сети, мы можем зафиксировать более сложные отношения между функциями и целевой переменной.

Обучение модели: Далее мы будем обучать нашу модель линейной регрессии, используя обучающий набор. Во время обучения модель изучает веса и смещения, которые минимизируют среднеквадратичную ошибку между прогнозируемыми и фактическими ценами на жилье. Мы можем использовать алгоритмы оптимизации, такие как стохастический градиентный спуск (SGD), для итеративного обновления параметров модели.

Оценка модели: после обучения модели нам необходимо оценить ее производительность с помощью тестового набора. Мы можем рассчитать различные показатели, такие как среднеквадратическая ошибка (MSE), среднеквадратическая ошибка (RMSE) и R-квадрат, чтобы оценить, насколько хорошо наша модель предсказывает цены на жилье. Кроме того, визуализации, такие как диаграммы рассеяния, могут помочь нам понять взаимосвязь между прогнозируемыми и фактическими ценами.

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

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