tf.keras.Sequential搭建回归模型

首先,我们应该清楚分类模型和回归模型的本质区别,才能在搭建模型的时候得心应手。

  • 分类模型:预测的是类别,模型的输出是在各个类别上的概率分布。所以分类模型在最后一层上的输出值个数是多个。
  • 预测模型:预测的是数值,模型的输出是一个实数值。所以回归模型在最后一层上的输出值个数是一个。

清楚了分类模型和预测模型的区别之后,我们就以一个实例来讲解回归模型的搭建过程。该实例是一个房价预测的模型,采用的数据集是sklearn.datasets 的 fetch_california_housing数据集。我们依然将模型的构建过程分为七步:

一:导入包

 1 import numpy as np
 2 import pandas as pd
 3 import matplotlib as mpl
 4 import matplotlib.pyplot as plt
 5 import sklearn
 6 
 7 import os
 8 import sys
 9 import time
10 
11 import tensorflow as tf
12 import tensorflow.keras as keras
13 
14 for module in np, pd, mpl, sklearn, tf, keras:
15     print (module.__name__, module.__version__)

二:数据加载

1 # 数据加载
2 from sklearn.datasets import fetch_california_housing
3 housing = fetch_california_housing(data_home='C:/Users/rencm/scikit_learn_data', download_if_missing=True)

三:切分训练集和验证集

1 # 切分训练集和验证集
2 from sklearn.model_selection import train_test_split
3 x_train_all, x_test, y_train_all, y_test = train_test_split(housing.data, housing.target, random_state = 7)
4 x_train, x_valid, y_train, y_valid = train_test_split(x_train_all, y_train_all, random_state = 11)
5 print (x_train.shape, x_valid.shape, x_test.shape)

四:输入数据归一化处理

1 # 输入数据归一化处理
2 from sklearn.preprocessing import StandardScaler
3 scaler = StandardScaler()
4 x_train_scaled = scaler.fit_transform(x_train)
5 x_valid_scaled = scaler.transform(x_valid)
6 x_test_scaled = scaler.transform(x_test)

五:模型建立

 1 # 模型建立
 2 model = keras.models.Sequential([
 3     keras.layers.Dense(30, activation = 'relu', input_shape = x_train.shape[1:]),
 4     keras.layers.Dense(1)
 5 ])
 6 model.compile(
 7     loss = 'mean_squared_error',
 8     optimizer = 'sgd'
 9 )
10 print (model.summary())

这里指的注意的一点是:我们的最后一层即输出层的输出个数为1,这是个分类模型的唯一区别。

六:训练模型

# 训练模型
history = model.fit(
    x_train_scaled, y_train,
    validation_data=(x_valid_scaled, y_valid),
    epochs = 100,
    callbacks=[
        keras.callbacks.EarlyStopping(min_delta = 1e-2, patience = 5)
    ]
)

七:测试模型

1 # 测试模型
2 model.evaluate(x_test_scaled, y_test)

 总结:

通过以上的过程可以看出,分类模型和回归模型的通用步骤都是一样的,只有在模型建立的时候有一点不同。即分类模型的输出层有多个输出,需要使用softmax激活函数,而回归模型的输出层只有一个输出,没有激活函数。

猜你喜欢

转载自www.cnblogs.com/renxiansheng/p/12526663.html
今日推荐