女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

TensorFlow回歸:建立了一個模型來預測汽車的燃油效率。

Tensorflowers ? 來源:lq ? 2019-01-16 14:09 ? 次閱讀

今天的內容介紹的是回歸問題。在回歸問題中,我們的目標是預測連續值的輸出,如價格或概率。將此與分類問題進行對比,我們的目標是預測離散標簽(例如,圖片里有一個蘋果或一個橙子)。

本筆記采用了經典的 Auto MPG 數據集,并建立了一個模型來預測 20 世紀 70 年代末和 80 年代初汽車的燃油效率。為此,我們將為模型提供該時間段內許多模型的描述。此描述包括以下屬性:氣缸,排量,馬力和重量。

此示例使用 tf.keras API,有關詳細信息,請參閱指南

https://tensorflow.google.cn/guide/keras?hl=zh-CN

# Use seaborn for pairplot!pip install -q seaborn

from __future__ import absolute_import, division, print_functionimport pathlibimport pandas as pdimport seaborn as snsimport tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras import layersprint(tf.__version__)

1.12.0

Auto MPG 數據集

該數據集可從UCI Machine Learning Repository 獲得(https://archive.ics.uci.edu/)。

取得數據

首先下載數據集

dataset_path = keras.utils.get_file("auto-mpg.data", "https://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data")dataset_path

Downloading data from https://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data

32768/30286 [================================] - 0s 1us/step

'/root/.keras/datasets/auto-mpg.data'

使用 pandas 導入

column_names = ['MPG','Cylinders','Displacement','Horsepower','Weight', 'Acceleration', 'Model Year', 'Origin'] raw_dataset = pd.read_csv(dataset_path, names=column_names, na_values = "?", comment='\t', sep=" ", skipinitialspace=True)dataset = raw_dataset.copy()dataset.tail()

清理數據

數據集包含一些未知數值

dataset.isna().sum()

MPG 0Cylinders 0Displacement 0Horsepower 6Weight 0Acceleration 0Model Year 0Origin 0dtype: int64

刪除那些行來保持本初始教程簡單明了

dataset = dataset.dropna()

上方表格中,“Origin” 列實際上是分類,而不是數字。所以把它轉換為one-hot:

origin = dataset.pop('Origin')

dataset['USA'] = (origin == 1)*1.0dataset['Europe'] = (origin == 2)*1.0dataset['Japan'] = (origin == 3)*1.0dataset.tail()

將數據拆分成訓練和測試

現在將數據拆分成一個訓練集和一個測試集。我們將在模型的最終評估中使用測試集。

train_dataset = dataset.sample(frac=0.8,random_state=0)test_dataset = dataset.drop(train_dataset.index)

檢查數據

快速瀏覽訓練集中幾個對列的聯合分布

sns.pairplot(train_dataset[["MPG", "Cylinders", "Displacement", "Weight"]], diag_kind="kde")

并查看這個整體統計數據:

train_stats = train_dataset.describe()train_stats.pop("MPG")train_stats = train_stats.transpose()train_stats

從標簽中分割特征

將目標值或 “標簽” 與特征分開。此標簽是您將要訓練模型進行預測的數值。

train_labels = train_dataset.pop('MPG')test_labels = test_dataset.pop('MPG')

將數據規范化

再次查看上面的train_stats 塊,并注意一下,每個特征的范圍有多么的大相徑庭。

使用不同比例和范圍進行特征規范化是一個不錯的做法。盡管模型可能在沒有特征歸一化的情況下收斂,但它會使訓練更加困難,并且它使得結果模型依賴于輸入中使用的單位的選擇。

注意:我們故意只使用來自訓練集的統計數據,這些統計數據也將被用于評估。這樣模型就沒有關于測試集的任何信息。

defnorm(x): return(x - train_stats['mean']) / train_stats['std']normed_train_data = norm(train_dataset)normed_test_data = norm(test_dataset)

這個規范化的數據是我們用來訓練模型的數據。

注意:此處用于規范化輸入的統計信息與模型權重同樣重要。

模型

建模

讓我們建立我們的模型。在這里,我們將使用具有兩個密集連接的隱藏層的 Sequential 模型,以及返回單個連續值的輸出層。模型構建步驟包含在一個函數 build_model 中,因為我們稍后將創建第二個模型。

def build_model(): model = keras.Sequential([ layers.Dense(64, activation=tf.nn.relu, input_shape=[len(train_dataset.keys())]), layers.Dense(64, activation=tf.nn.relu), layers.Dense(1) ]) optimizer = tf.train.RMSPropOptimizer(0.001) model.compile(loss='mse', optimizer=optimizer, metrics=['mae', 'mse']) return model

model = build_model()

檢查模型

使用 .summary 方法打印模型的簡單描述

model.summary()

_________________________________________________________________Layer (type) Output Shape Param # =================================================================dense (Dense) (None, 64) 640 _________________________________________________________________dense_1 (Dense) (None, 64) 4160 _________________________________________________________________dense_2 (Dense) (None, 1) 65 =================================================================Total params: 4,865Trainable params: 4,865Non-trainable params: 0_________________________________________________________________

現在來試一試這個模型。從訓練數據中取出一批 10 個示例并調用 model.predict。

example_batch = normed_train_data[:10]example_result = model.predict(example_batch)example_result

array([[ 0.08682194], [ 0.0385334 ], [ 0.11662665], [-0.22370592], [ 0.12390759], [ 0.1889237 ], [ 0.1349103 ], [ 0.41427213], [ 0.19710071], [ 0.01540279]], dtype=float32)

它看上去起效了,產生預期的形狀和類型的結果。

訓練模型

該模型經過 1000 個 epoch 的訓練,并在歷史對象中記錄訓練和驗證的準確性。

# Display training progress by printing a single dot for each completed epochclass PrintDot(keras.callbacks.Callback): def on_epoch_end(self, epoch, logs): if epoch % 100 == 0: print('') print('.', end='')EPOCHS = 1000history = model.fit( normed_train_data, train_labels, epochs=EPOCHS, validation_split = 0.2, verbose=0, callbacks=[PrintDot()])

................................................................................................................................................................................................................................................................................................................................................................................................................

使用存儲在歷史對象中的統計數據將模型的訓練進度可視化。

hist = pd.DataFrame(history.history)hist['epoch'] = history.epochhist.tail()

import matplotlib.pyplot as pltdef plot_history(history): plt.figure() plt.xlabel('Epoch') plt.ylabel('Mean Abs Error [MPG]') plt.plot(hist['epoch'], hist['mean_absolute_error'], label='Train Error') plt.plot(hist['epoch'], hist['val_mean_absolute_error'], label = 'Val Error') plt.legend() plt.ylim([0,5]) plt.figure() plt.xlabel('Epoch') plt.ylabel('Mean Square Error [$MPG^2$]') plt.plot(hist['epoch'], hist['mean_squared_error'], label='Train Error') plt.plot(hist['epoch'], hist['val_mean_squared_error'], label = 'Val Error') plt.legend() plt.ylim([0,20])plot_history(history)

該圖顯示數百個 epoch 后的驗證錯誤幾乎沒有改善,甚至降低了。讓我們更新 model.fit 方法,以便在驗證分數沒有提高時自動停止訓練。我們將使用一個回調測試每個 epoch 的訓練條件。如果經過一定數量的時期而沒有顯示出改進,則自動停止訓練。

您可以在

https://tensorflow.google.cn/api_docs/python/tf/keras/callbacks/EarlyStopping?hl=zh-CN了解有關此回調的更多信息。

model = build_model()# The patience parameter is the amount of epochs to check for improvementearly_stop = keras.callbacks.EarlyStopping(monitor='val_loss', patience=50)history = model.fit(normed_train_data, train_labels, epochs=EPOCHS, validation_split = 0.2, verbose=0, callbacks=[early_stop, PrintDot()])plot_history(history)

該圖表顯示在驗證集上,平均誤差通常在 +/- 2 MPG 左右。這個結果好嗎? 我們將決定權留給你。

讓我們看看模型在測試集上是如何執行的,在訓練模型時我們并沒有使用它:

loss, mae, mse = model.evaluate(normed_test_data, test_labels, verbose=0)print("Testing set Mean Abs Error: {:5.2f} MPG".format(mae))

Testing set Mean Abs Error: 1.88 MPG

作出預測

最后,使用測試集中的數據預測 MPG 值:

test_predictions = model.predict(normed_test_data).flatten()plt.scatter(test_labels, test_predictions)plt.xlabel('True Values [MPG]')plt.ylabel('Predictions [MPG]')plt.axis('equal')plt.axis('square')plt.xlim([0,plt.xlim()[1]])plt.ylim([0,plt.ylim()[1]])_ = plt.plot([-100, 100], [-100, 100])

error = test_predictions - test_labelsplt.hist(error, bins = 25)plt.xlabel("Prediction Error [MPG]")_ = plt.ylabel("Count")

結論

本筆記介紹了一些處理回歸問題的技巧:

均方誤差(MSE)是用于回歸問題的常見損失函數(與分類問題不同)

同樣,用于回歸的評估指標與分類不同。常見的回歸指標是平均絕對誤差(MAE)

當輸入數據要素具有不同范圍的值時,應單獨縮放每個要素

如果訓練數據不多,則選擇隱藏層較少的小型網絡,以避免過度擬合

防止過度裝配的一個有用的技術是盡早停止

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據集
    +關注

    關注

    4

    文章

    1222

    瀏覽量

    25269
  • tensorflow
    +關注

    關注

    13

    文章

    330

    瀏覽量

    61024

原文標題:TensorFlow 回歸:預測燃油效率

文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    GPRS小區流量預測中時序模型的比較研究

    針對通用無線分組業務(GPRS)小區流量預測問題,對幾種典型時序預測模型的性能進行了綜合分析。在總結時序預測模型使用步驟的基礎上,分析了自
    發表于 05-06 09:03

    經濟預測模型

    該資料是由幾篇論文和講義組成,具體講解了回歸分析預測、時間序列預測、宏觀計量經濟模型
    發表于 08-15 10:47

    回歸預測之入門

    會通過系列的過程得到估計的函數,這個函數有能力對沒有見過的新數據給出新的估計,也被稱為構建
    發表于 10-15 10:19

    Keras之ML~P:基于Keras中建立回歸預測的神經網絡模型

    Keras之ML~P:基于Keras中建立回歸預測的神經網絡模型(根據200數據樣本預測新的
    發表于 12-20 10:43

    Tensorflow的非線性回歸

    Tensorflow 非線性回歸
    發表于 05-12 10:19

    TensorFlow實現簡單線性回歸

    ??梢詫祿M行歸化處理: 為訓練數據聲明 TensorFlow 占位符: 創建 TensorFlow 的權重和偏置變量且初始值為零: 定義用于預測的線性
    發表于 08-11 19:34

    TensorFlow實現多元線性回歸(超詳細)

    隨著訓練過程的進行而減少: 本節使用了 13 特征訓練模型。簡單線性回歸和多元線性回歸的主要不同在于權重,且系數的數量始終等于輸入特征的
    發表于 08-11 19:35

    TensorFlow邏輯回歸處理MNIST數據集

    。mnist.train.images 的每項都是范圍介于 0 到 1 的像素強度: 在 TensorFlow 圖中為訓練數據集的輸入 x 和標簽 y 創建占位符: 創建學習變量、權重和偏置: 創建邏輯
    發表于 08-11 19:36

    TensorFlow邏輯回歸處理MNIST數據集

    。mnist.train.images 的每項都是范圍介于 0 到 1 的像素強度: 在 TensorFlow 圖中為訓練數據集的輸入 x 和標簽 y 創建占位符: 創建學習變量、權重和偏置: 創建邏輯
    發表于 08-11 19:36

    Edge Impulse的回歸模型

    Edge Impulse的回歸模型可以從數據中學習模式,并將其應用于新數據。 非常適合預測數字連續值。
    發表于 12-20 06:21

    使用KNN進行分類和回歸

    般情況下k-Nearest Neighbor (KNN)都是用來解決分類的問題,其實KNN是種可以應用于數據分類和預測的簡單算法,本文中我們將它與簡單的線性回歸進行比較。KNN
    發表于 10-28 14:44

    回歸滯后模型進行多變量時間序列預測案例分享

    1、如何建立模型進行多元時間序列預測呢?  下圖顯示了關于不同類型葡萄酒銷量的月度多元時間
    發表于 11-30 15:33

    如何利用高斯過程回歸模型建立燃料電池電堆功率預測模型?

    對車輛輔助裝置的控件進行優化設計時,需要建立燃料電池電堆功率預測模型,而該模型
    的頭像 發表于 11-02 15:34 ?1637次閱讀
    如何利用高斯過程<b class='flag-5'>回歸</b><b class='flag-5'>模型</b><b class='flag-5'>建立</b>燃料電池電堆功率<b class='flag-5'>預測</b><b class='flag-5'>模型</b>?

    如何使用Tensorflow保存或加載模型

    TensorFlow廣泛使用的開源機器學習庫,它提供了豐富的API構建和訓練各種深度學習模型。在
    的頭像 發表于 07-04 13:07 ?2497次閱讀

    keras模型tensorflow session

    在這篇文章中,我們將討論如何將Keras模型轉換為TensorFlow session。 Keras和TensorFlow簡介 Keras是
    的頭像 發表于 07-05 09:36 ?794次閱讀