tensorflow采用keras序列模型,实现波士顿房价预测问题的建模与训练
时间: 2023-11-22 07:52:36 浏览: 46
好的,下面是实现波士顿房价预测问题的建模与训练的代码。首先,我们需要导入必要的库:
```python
import numpy as np
import pandas as pd
import tensorflow as tf
from tensorflow import keras
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
```
然后,我们加载数据集并进行预处理:
```python
# 加载数据集
boston = load_boston()
# 将数据集转换为DataFrame格式
boston_df = pd.DataFrame(boston.data, columns=boston.feature_names)
# 添加房价列
boston_df['PRICE'] = boston.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
boston.data, boston.target, test_size=0.2, random_state=42)
# 对特征进行标准化处理
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
```
接下来,我们使用Keras序列模型构建神经网络:
```python
# 构建模型
model = keras.Sequential([
keras.layers.Dense(64, activation='relu', input_shape=[X_train.shape[1]]),
keras.layers.Dropout(0.2),
keras.layers.Dense(64, activation='relu'),
keras.layers.Dropout(0.2),
keras.layers.Dense(1)
])
# 编译模型
model.compile(loss='mse', optimizer='adam', metrics=['mae'])
```
这个神经网络有两个隐藏层和一个输出层。我们使用ReLU激活函数,以及Dropout层来避免过拟合。最后,我们使用均方误差作为损失函数,Adam优化器进行优化,并且使用平均绝对误差作为评价指标。
现在,我们可以训练模型了:
```python
# 训练模型
history = model.fit(X_train, y_train, epochs=100, validation_split=0.2, verbose=0)
# 评估模型
mse, mae = model.evaluate(X_test, y_test, verbose=0)
print("Mean Squared Error:", mse)
print("Mean Absolute Error:", mae)
```
我们训练了100个epochs,并且使用20%的数据作为验证集。最后,我们评估模型并输出均方误差和平均绝对误差。
完整代码如下: