使用TensorFlow2.0 将波士顿房价数据集分为训练集,验证集和测试集(6:2:2),进行Tensorflow2.0的数据加载、线性回归模型的搭建、线性回归模型的交叉验证、模型保持和新数据预测。
时间: 2023-06-10 15:06:38 浏览: 99
日月光华TensorFlow2.0个人收集整理的数据集和代码
好的,首先我们需要加载波士顿房价数据集。可以使用Scikit-learn库中的load_boston函数来加载数据。接下来,我们将数据集分为训练集,验证集和测试集,比例为6:2:2。
``` python
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
# 加载数据集
boston = load_boston()
# 分割数据集
X_trainval, X_test, y_trainval, y_test = train_test_split(boston.data, boston.target, test_size=0.2, random_state=42)
X_train, X_val, y_train, y_val = train_test_split(X_trainval, y_trainval, test_size=0.25, random_state=42)
print("训练集大小:", X_train.shape[0])
print("验证集大小:", X_val.shape[0])
print("测试集大小:", X_test.shape[0])
```
接下来,我们可以构建线性回归模型。在TensorFlow2.0中,可以使用tf.keras.Sequential()来构建模型。我们只需要添加一层全连接层即可。同时,我们也需要设置模型的优化器和损失函数。
``` python
import tensorflow as tf
from tensorflow.keras import layers
# 构建模型
model = tf.keras.Sequential([
layers.Dense(1, input_shape=[X_train.shape[1]])
])
# 设置优化器和损失函数
optimizer = tf.keras.optimizers.SGD(learning_rate=0.01)
loss_fn = tf.keras.losses.mean_squared_error
```
接下来,我们可以使用交叉验证来评估模型。在TensorFlow2.0中,可以使用Keras的cross_val_score()函数来进行交叉验证。我们需要指定模型、优化器、损失函数和评估指标。
``` python
from tensorflow.keras.wrappers.scikit_learn import KerasRegressor
from sklearn.model_selection import cross_val_score
# 封装模型
def build_model():
model = tf.keras.Sequential([
layers.Dense(1, input_shape=[X_train.shape[1]])
])
optimizer = tf.keras.optimizers.SGD(learning_rate=0.01)
model.compile(loss='mse', optimizer=optimizer, metrics=['mae'])
return model
# 交叉验证
estimator = KerasRegressor(build_fn=build_model, epochs=100, batch_size=10, verbose=0)
scores = cross_val_score(estimator, X_trainval, y_trainval, cv=10)
print("交叉验证结果:", scores.mean())
```
接下来,我们可以训练模型,并在验证集上进行评估。在每个epoch结束后,我们可以通过检查验证集上的损失来判断模型是否过拟合。
``` python
# 训练模型
history = model.fit(X_train, y_train, validation_data=(X_val, y_val), epochs=100, verbose=0)
# 评估模型
loss, mae = model.evaluate(X_val, y_val)
print("验证集上的损失:", loss)
```
接下来,我们可以保存模型。
``` python
# 保存模型
model.save("linear_regression_model.h5")
```
最后,我们可以使用训练好的模型来预测新数据。
``` python
# 加载模型
model = tf.keras.models.load_model("linear_regression_model.h5")
# 预测新数据
new_data = [[0.1, 10, 5, 0, 0.4, 6, 50, 5, 4, 300, 15, 400, 20]]
prediction = model.predict(new_data)
print("预测结果:", prediction[0][0])
```
阅读全文