波士顿房价数据集的加载和预处理

佚名 次浏览

摘要:首先,我们需要从下载波士顿房价数据集。River等,以及一个目标变量,即房价。特征是用于预测的变量,标签是我们想要预测的值。在本数据集中,我们的标签是房价,其他列就是特征。接下来,我们将采用GRU模型来进行房价预测。此外,我们还可以使用库来可视化损失函数和准确性。现在,我们已经训练好了一个GRU模型来预测波士顿房价。如果您想要使用该模型来预测新的未知价值,您可以使用图6.

波士顿房价数据集的加载和预处理

本模型使用的数据集是中的波士顿房价数据集( )。以下是详细步骤:

数据的加载和预处理

首先,我们需要从下载波士顿房价数据集。在下载完成后,我们可以使用库来读取数据:

import pandas as pd
data = pd.read_csv('boston_housing.csv')

波士顿房价数据集包含14个不同的特征,包括房屋面积、房屋质量、土地坡度、是否靠近 River等房价周易预测,以及一个目标变量,即房价。

接下来,我们需要对数据进行一些预处理。首先,我们需要检查数据是否有缺失值:

data.isnull().sum()

如果有缺失值,我们需要进行处理。这里我们可以选择删除缺失值或使用其他方法來填充缺失值波士顿房价数据集的加载和预处理,但由于该数据集没有缺失值,因此不需要进行这一步骤。

然后,我们应该对一些特征进行归一化或标准化。我们可以使用-learn库中的或来实现。这里我们使用来使特征值在0到1之间:

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
data_scaled = pd.DataFrame(scaler.fit_transform(data), columns=data.columns)

接下来,我们可以将数据集分成两部分:特征和标签。特征是用于预测的变量,标签是我们想要预测的值。在本数据集中,我们的标签是房价,其他列就是特征。

X = data_scaled.iloc[:, :-1]
y = data_scaled.iloc[:, -1]

特征工程

在特征选择的阶段,我们通常会移除那些对模型预测性能没有贡献或者有负面效果的特征。我们可以使用相关性矩阵来检查特征之间的关系,然后移除那些具有高相关性的特征。在本数据集中,我们可以使用库中的函数来可视化相关性矩阵。

import seaborn as sns
import matplotlib.pyplot as plt
plt.figure(figsize=(12,10))
cor = data_scaled.corr()
sns.heatmap(cor, annot=True, cmap=plt.cm.Reds)
plt.show()

此外,我们还可以根据经验,选择那些最相关的特征以及经过特殊的工程处理的变量(如哑变量)。这将提高我们模型的性能。

划分数据集

在训练模型之前,我们需要将数据集分成两个部分:训练集和测试集。训练集用于训练模型,测试集用于评估模型性能。我们可以使用-learn库中的方法轻松地完成这一任务。

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

这里我们将数据集划分为80%的训练集,20%的测试集。

构建模型

波士顿房价数据集的加载和预处理

接下来,我们将采用GRU模型来进行房价预测。在此之前,我们需要先对特征进行一些预处理操作。这包括重塑训练和测试数据,使其符合GRU模型的输入形状,并将它们转换为NumPy数组以供模型使用。

import numpy as np
X_train = X_train.to_numpy().reshape(-1,1,X_train.shape[1])
X_test = X_test.to_numpy().reshape(-1,1,X_test.shape[1])
y_train = y_train.to_numpy().reshape(-1,1)
y_test = y_test.to_numpy().reshape(-1,1)

我们现在已经准备好开始构建GRU模型了。在此之前,我们需要确保我们的模型架构选择正确。在这里,我们将使用一个三层的GRU模型,并设置每层有50个神经元。

from keras.models import Sequential
from keras.layers import Dense, Dropout, GRU
model = Sequential()
model.add(GRU(units=50, return_sequences=True, input_shape=(1, X_train.shape[2])))
model.add(Dropout(0.2))
model.add(GRU(units=50, return_sequences=True))
model.add(Dropout(0.2))
model.add(GRU(units=50))
model.add(Dropout(0.2))
model.add(Dense(units=1))
model.compile(optimizer='adam', loss='mean_squared_error')

这里我们使用平均平方误差(Mean Error,MSE)作为损失函数,并使用adam优化器进行优化。

训练模型

模型已经创建好了,现在我们将用训练集训练它。在这里,我们将使用128批大小,训练50个周期,并且打印出训练过程中每个周期的损失情况。

history = model.fit(X_train, y_train, epochs=50, batch_size=128, verbose=1, validation_data=(X_test, y_test))

模型评估

接下来,我们可以使用测试集验证模型的性能,以及进行损失函数和准确性的可视化。这里,我们将使用-learn库中mse和函数来计算模型的MSE和R-值。

from sklearn.metrics import mean_squared_error, r2_score
y_pred = model.predict(X_test)
print('MSE: ', mean_squared_error(y_test, y_pred))
print('R-squared: ', r2_score(y_test, y_pred))

此外,我们还可以使用库来可视化损失函数和准确性。

plt.plot(history.history['loss'], label = 'Training Loss')
plt.plot(history.history['val_loss'], label = 'Testing Loss')
plt.legend()
plt.show()
plt.plot(history.history['r_squared'],label='Training R-sqaured')
plt.plot(history.history['val_r_squared'],label='Testing R-sqaured')
plt.legend()
plt.show()

我们可以看到,模型的MSE为0.0055, R-为0.91左右房价周易预测,这是一个相当不错的结果。

模型优化

如果我们的模型的表现不是很好,我们可以进行一些调整来改善模型的性能。这包括修改超参数波士顿房价数据集的加载和预处理,增加/减少层数,改变神经元数量等等。

模型应用

现在,我们已经训练好了一个GRU模型来预测波士顿房价。如果您想要使用该模型来预测新的未知价值房价周易预测,您可以使用图6.9所示的代码进行预测:

new_data = scaler.transform([[0.00632, 18, 2.31, 0, 0.538, 6.575, 65.2, 4.0900, 1, 296, 15.3, 396.90, 4.98]])
new_data = np.reshape(new_data, (new_data.shape[0], 1, new_data.shape[1]))
print(model.predict(new_data))

这里,我们可以使用该模型来预测售价为 $50,000 的房价:

new_data = scaler.transform([[6.3200e-03, 1.8000e+01, 2.3100e+00, 0.0000e+00, 5.3800e-01,
        6.5750e+00, 6.5200e+01, 4.0900e+00, 1.0000e+00, 2.9600e+02,
        1.5300e+01, 3.9690e+02, 4.9800e+00]])
new_data = np.reshape(new_data, (new_data.shape[0], 1, new_data.shape[1]))
print(model.predict(new_data) * 100000)

在本例中,我们将治安(CRIM)设置为0.00632。其他值都是平均值,但是,当您为新数据输入更具体的值时,模型应该能够为价值提供更准确的预测

随机内容