Keras(二)回归模型实战

本文将介绍如下内容:

  • 下载并使用sklearn中的数据集
  • 使用“pprint”查看数据集样例
  • 拆分数据集中的数据为 训练数据、验证数据、测试数据
  • 在将数据带入到模型之前,先进行预处理-训练、验证、测试数据标准化
  • 构建回归模型、模型层级图、编译模型(添加损失函数、优化器)、添加回调函数
  • 训练构建的模型
  • 得到训练曲线图
  • 调用估计器

一,下载并使用sklearn中的数据集

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import sklearn
import pandas as pd
import os
import sys
import time
import tensorflow as tf
from tensorflow import keras

# 1,打印使用的python库的版本信息
print(sys.version_info)
for module in mpl, np, pd, sklearn, tf, keras:
    print(module.__name__, module.__version__)
   
# 2,下载并使用sklearn中的“fetch_california_housing”数据集
from sklearn.datasets import fetch_california_housing

housing = fetch_california_housing()
print(housing.DESCR)
print(housing.data.shape)
print(housing.target.shape)

#-----output-------------------
(20640, 8)
(20640,)

二,使用“pprint”查看数据集样例

import pprint

pprint.pprint(housing.data[0:5])
pprint.pprint(housing.target[0:5])

#-----output-------------------
array([[ 8.32520000e+00,  4.10000000e+01,  6.98412698e+00,
         1.02380952e+00,  3.22000000e+02,  2.55555556e+00,
         3.78800000e+01, -1.22230000e+02],
       [ 8.30140000e+00,  2.10000000e+01,  6.23813708e+00,
         9.71880492e-01,  2.40100000e+03,  2.10984183e+00,
         3.78600000e+01, -1.22220000e+02],
       [ 7.25740000e+00,  5.20000000e+01,  8.28813559e+00,
         1.07344633e+00,  4.96000000e+02,  2.80225989e+00,
         3.78500000e+01, -1.22240000e+02],
       [ 5.64310000e+00,  5.20000000e+01,  5.81735160e+00,
         1.07305936e+00,  5.58000000e+02,  2.54794521e+00,
         3.78500000e+01, -1.22250000e+02],
       [ 3.84620000e+00,  5.20000000e+01,  6.28185328e+00,
         1.08108108e+00,  5.65000000e+02,  2.18146718e+00,
         3.78500000e+01, -1.22250000e+02]])
array([4.526, 3.585, 3.521, 3.413, 3.422])

三,拆分数据集中的数据为 训练数据、验证数据、测试数据

from sklearn.model_selection import train_test_split

x_train_all, x_test, y_train_all, y_test = train_test_split(housing.data, housing.target, random_state=7,test_size=0.3)
x_train, x_valid, y_train, y_valid = train_test_split(x_train_all, y_train_all, random_state = 11,test_size=0.3)
print(x_train.shape, y_train.shape)
print(x_valid.shape, y_valid.shape)
print(x_test.shape, y_test.shape)

#-----output-------------------
(10113, 8) (10113,)
(4335, 8) (4335,)
(6192, 8) (6192,)

四,在将数据带入到模型之前,先进行预处理-训练、验证、测试数据标准化

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
x_train_scaled = scaler.fit_transform(x_train)
x_valid_scaled = scaler.transform(x_valid)
x_test_scaled = scaler.transform(x_test)

五,构建回归模型、模型层级图、编译模型(添加损失函数、优化器)、添加回调函数

model = keras.models.Sequential([
    keras.layers.Dense(30, activation='relu',input_shape=x_train.shape[1:]),
    keras.layers.Dense(1),
])
print(model.summary())
model.compile(loss="mean_squared_error", optimizer="sgd")


logdir = './callbacks'
if not os.path.exists(logdir):
    os.mkdir(logdir)
output_model_file = os.path.join(logdir,"fashion_mnist_model.h5")
callbacks = [    
    keras.callbacks.TensorBoard(logdir),# TensorBoard-终端输入“tensorboard --logdir=callbacks”查看图结构
    keras.callbacks.ModelCheckpoint(output_model_file,save_best_only = True),# 保存最好的模型结果
    keras.callbacks.EarlyStopping(patience=5, min_delta=1e-3)]

#------output----------
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_24 (Dense)             (None, 30)                270       
_________________________________________________________________
dense_25 (Dense)             (None, 1)                 31        
=================================================================
Total params: 301
Trainable params: 301
Non-trainable params: 0

六,训练构建的模型

history = model.fit(x_train_scaled, y_train,
                    validation_data = (x_valid_scaled, y_valid),
                    epochs = 100,
                    callbacks = callbacks)

七,得到训练曲线图

def plot_learning_curves(history):
    pd.DataFrame(history.history).plot(figsize=(8, 5))
    plt.grid(True)
    plt.gca().set_ylim(0, 1)
    plt.show()
plot_learning_curves(history)

在这里插入图片描述

八,调用估计器

print(model.evaluate(x_test_scaled, y_test, verbose=0))

#------output----------
0.36572834849357605

九,总结

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import sklearn
import pandas as pd
import os
import sys
import time
import tensorflow as tf
from tensorflow import keras

# 1,打印使用的python库的版本信息
print(sys.version_info)
for module in mpl, np, pd, sklearn, tf, keras:
    print(module.__name__, module.__version__)
   
# 2,下载并使用sklearn中的“fetch_california_housing”数据集
from sklearn.datasets import fetch_california_housing

housing = fetch_california_housing()
print(housing.DESCR)
print(housing.data.shape)
print(housing.target.shape)

# 3,使用“pprint”查看数据集样例
import pprint

pprint.pprint(housing.data[0:5])
pprint.pprint(housing.target[0:5])

# 4,拆分数据集中的数据为 训练数据、验证数据、测试数据
from sklearn.model_selection import train_test_split

x_train_all, x_test, y_train_all, y_test = train_test_split(housing.data, housing.target, random_state=7,test_size=0.3)
x_train, x_valid, y_train, y_valid = train_test_split(x_train_all, y_train_all, random_state = 11,test_size=0.3)
print(x_train.shape, y_train.shape)
print(x_valid.shape, y_valid.shape)
print(x_test.shape, y_test.shape)

# 5,在将数据带入到模型之前,先进行预处理-训练、验证、测试数据标准化
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
x_train_scaled = scaler.fit_transform(x_train)
x_valid_scaled = scaler.transform(x_valid)
x_test_scaled = scaler.transform(x_test)

# 6,构建回归模型、模型层级图、编译模型(添加损失函数、优化器)、添加回调函数
model = keras.models.Sequential([
    keras.layers.Dense(30, activation='relu',input_shape=x_train.shape[1:]),
    keras.layers.Dense(1),
])
print(model.summary())
model.compile(loss="mean_squared_error", optimizer="sgd")


logdir = './callbacks'
if not os.path.exists(logdir):
    os.mkdir(logdir)
output_model_file = os.path.join(logdir,"fashion_mnist_model.h5")
callbacks = [    
    keras.callbacks.TensorBoard(logdir),# TensorBoard-终端输入“tensorboard --logdir=callbacks”查看图结构
    keras.callbacks.ModelCheckpoint(output_model_file,save_best_only = True),# 保存最好的模型结果
    keras.callbacks.EarlyStopping(patience=5, min_delta=1e-3)]

# 7,训练构建的模型
history = model.fit(x_train_scaled, y_train,
                    validation_data = (x_valid_scaled, y_valid),
                    epochs = 100,
                    callbacks = callbacks)

# 8,得到训练曲线图
def plot_learning_curves(history):
    pd.DataFrame(history.history).plot(figsize=(8, 5))
    plt.grid(True)
    plt.gca().set_ylim(0, 1)
    plt.show()
plot_learning_curves(history)

# 9,调用估计器
print(model.evaluate(x_test_scaled, y_test, verbose=0))

猜你喜欢

转载自blog.csdn.net/TFATS/article/details/109776966