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激活函數,而回歸模型的輸出層只有一個輸出,沒有激活函數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM