使用TensorFlow和Keras序列模型实现波士顿房价预测问题的建模与训练的完整代码
时间: 2023-07-15 08:15:04 浏览: 128
以下是使用TensorFlow和Keras序列模型实现波士顿房价预测问题的完整代码:
```python
# 导入所需的库
import numpy as np
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# 加载数据集
boston = load_boston()
X, y = boston.data, boston.target
# 数据预处理
scaler = StandardScaler()
X = scaler.fit_transform(X)
y = (y - y.mean()) / y.std()
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 定义模型
model = Sequential()
model.add(Dense(64, activation='relu', input_shape=(X_train.shape[1],)))
model.add(Dense(32, activation='relu'))
model.add(Dense(1))
# 编译模型
model.compile(optimizer='adam', loss='mse', metrics=['mae'])
# 训练模型
model.fit(X_train, y_train, epochs=100, batch_size=32, validation_split=0.2)
# 评估模型
loss, mae = model.evaluate(X_test, y_test)
print("Test set Mean Absolute Error: {:.2f}".format(mae))
```
在这个代码中,我们使用了`load_boston()`函数从sklearn库中加载了波士顿房价数据集。然后使用`StandardScaler()`标准化数据,并将标签值进行了规范化。接着,利用`train_test_split()`函数将数据集划分成训练集和测试集。我们将建立一个包含3个密集层的序列模型,其中第一个层使用了64个神经元,第二个层使用了32个神经元,最后一层是一个输出层,它只有一个神经元。我们使用了Adam优化器来编译模型并使用均方误差作为损失函数和平均绝对误差作为性能指标,然后使用`fit()`函数来训练模型。最后,我们使用`evaluate()`函数评估模型在测试集上的表现。
注意,这里的模型并没有进行调参,实际应用中需要进行更多的调参工作来优化模型性能。
阅读全文