最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Tensorflow?2.1完成對MPG回歸預(yù)測詳解

 更新時間:2022年11月18日 16:30:03   作者:我是王大你是誰  
這篇文章主要為大家介紹了Tensorflow?2.1完成對MPG回歸預(yù)測詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

前言

本文的主要內(nèi)容是使用 cpu 版本的 tensorflor-2.1 完成對 Auto MPG 數(shù)據(jù)集的回歸預(yù)測任務(wù)。

獲取 Auto MPG 數(shù)據(jù)并進行數(shù)據(jù)的歸一化處理

(1)Auto MPG 數(shù)據(jù)集描述了汽車燃油效率的特征值和標簽值,我們通過模型的學(xué)習可以從特征中找到規(guī)律,最后以最小的誤差來預(yù)測目標 MPG 。

(2)我們使用 keras 自帶的函數(shù)可以直接從網(wǎng)絡(luò)上下載數(shù)據(jù)保存到本地。

(3)每行都包含 MPG 、氣缸、排量、馬力、重量、加速、車型年份、原產(chǎn)地等八列數(shù)據(jù),其中 MPG 就是我們的標簽值,其他都是特征。

dataset_path = keras.utils.get_file("auto-mpg.data", "http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data")
column_names = ['MPG','氣缸','排量','馬力','重量', '加速', '車型年份', '原產(chǎn)地']
raw_dataset = pd.read_csv(dataset_path, names=column_names, na_values = "?", comment='\t',  sep=" ", skipinitialspace=True)
dataset = raw_dataset.copy()

對數(shù)據(jù)進行處理

(1)因為數(shù)據(jù)中存在一些空值,會影響我們對于特征的計算和目標的預(yù)測,所以將數(shù)據(jù)中存在空數(shù)據(jù)的行刪除掉。

dataset = dataset.dropna()

(2)因為“原產(chǎn)地”這一列總共只有 1、2、3 三種值,分別表示三個國家,所以我們將他們各自提出來單獨做成一列,這樣就相當于給每個國家類別轉(zhuǎn)換成了 ont-hot 。

origin = dataset.pop('原產(chǎn)地')
dataset['阿美莉卡'] = (origin == 1)*1.0
dataset['毆們'] = (origin == 2)*1.0
dataset['小日本子'] = (origin == 3)*1.0

(3)按照一定的比例,取 90% 的數(shù)據(jù)為訓(xùn)練數(shù)據(jù),取 10% 的數(shù)據(jù)為測試數(shù)據(jù)。

train_datas = dataset.sample(frac=0.9, random_state=0)
test_datas = dataset.drop(train_dataset.index)

(4) 這里主要是使用一些內(nèi)置的函數(shù)來查看訓(xùn)練集對每一列數(shù)據(jù)的各種常見的統(tǒng)計指標情況,主要有 count、mean、std、min、25%、50%、75%、max ,這樣省去了我們后邊的計算,直接使用即可。

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

(5)數(shù)據(jù)中的 MPG 就是我們需要預(yù)測的回歸目標,我們將這一列從訓(xùn)練集和測試集中彈出,單獨做成標簽。 MPG 意思就是 Miles per Gallon ,這是一個衡量一輛汽車在郵箱中只加一加侖汽油或柴油時可以行駛多少英里的中要指標。

train_labels = train_datas.pop('MPG')
test_labels = test_datas.pop('MPG')

(6)這里主要是對訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)進行歸一化,將每個特征應(yīng)獨立縮放到相同范圍,因為當輸入數(shù)據(jù)特征值存在不同范圍時,不利于模型訓(xùn)練的快速收斂,我在文章最后的第七節(jié)中放了一張沒有進行數(shù)據(jù)歸一化后模型訓(xùn)練評估指標,可以看到很雜亂無章。

def norm(stats, x):
    return (x - stats['mean']) / stats['std']
train_datas = norm(train_stats, train_datas)
test_datas = norm(train_stats, test_datas)

搭建深度學(xué)習模型

搭建深度學(xué)習模型、并完成模型的配置和編譯

這里主要是搭建深度學(xué)習模型、配置模型并編譯模型。

(1)模型主要有三層:

  • 第一層主要是一個全連接層操作,將每個樣本的所有特征值輸入,通過 relu 激活函數(shù)的非線性變化,最后輸出一個 64 維的向量。
  • 第二層主要是一個全連接層操作,將上一層的 64 維的向量,通過 relu 激活函數(shù)的非線性變化,最后輸出一個 32 維的向量。
  • 第三層主要是一個全連接層操作,將上一層的 32 維的向量,最后輸出一個 1 維的結(jié)果,這其實就是輸出預(yù)測的回 MPG 。

(2)模型中優(yōu)化器這里選用 RMSprop ,學(xué)習率為 0.001 。

(3)模型中的損失值指標是 MSE ,MSE 其實就是均方差,該統(tǒng)計參數(shù)是模型預(yù)測值和原始樣本的 MPG 值誤差的平方和的均值。

(4)模型的評估指標選用 MAE 和 MSE ,MSE 和上面的一樣,MAE 是平均絕對誤差,該統(tǒng)計參數(shù)指的就是模型預(yù)測值與原始樣本的 MPG 之間絕對誤差的平均值。

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

使用 EarlyStoping 完成模型訓(xùn)練

(1)這里使用訓(xùn)練集數(shù)據(jù)和標簽進行模型訓(xùn)練,總共需要進行 1000 個 epoch ,并且在訓(xùn)練過程中選取訓(xùn)練數(shù)據(jù)的 20% 作為驗證集來評估模型效果,為了避免存在過擬合的現(xiàn)象,這里我們用 EarlyStopping 技術(shù)來進行優(yōu)化,也就是當經(jīng)過一定數(shù)量的 epoch (我們這里定義的是 20 )后沒有改進效果,則自動停止訓(xùn)練。

early_stop = keras.callbacks.EarlyStopping(monitor='val_loss', patience=20)
history = model.fit(train_datas, train_labels, epochs=1000, validation_split = 0.2, verbose=2, callbacks=[early_stop])

訓(xùn)練過程的指標輸出如下,可以看到到了第 106 次 epoch 之后就停止了訓(xùn)練:

Train on 282 samples, validate on 71 samples
Epoch 1/1000
282/282 - 0s - loss: 567.8865 - mae: 22.6320 - mse: 567.8865 - val_loss: 566.0270 - val_mae: 22.4126 - val_mse: 566.0270
Epoch 2/1000
282/282 - 0s - loss: 528.5458 - mae: 21.7937 - mse: 528.5459 - val_loss: 526.6008 - val_mae: 21.5748 - val_mse: 526.6008
...
Epoch 105/1000
282/282 - 0s - loss: 6.1971 - mae: 1.7478 - mse: 6.1971 - val_loss: 5.8991 - val_mae: 1.8962 - val_mse: 5.8991
Epoch 106/1000
282/282 - 0s - loss: 6.0749 - mae: 1.7433 - mse: 6.0749 - val_loss: 5.7558 - val_mae: 1.8938 - val_mse: 5.7558

(2)這里也展示的是模型在訓(xùn)練過程,使用訓(xùn)練集和驗證集的 mae 、mse 繪制的兩幅圖片,我們可以看到在到達 100 多個 epoch 之后,訓(xùn)練過程就終止了,避免了模型的過擬合。

使用測試數(shù)據(jù)對模型進行評估

loss, mae, mse = model.evaluate(test_datas, test_labels, verbose=2)
print("測試集的 MAE 為: {:5.2f} MPG ,MSE 為 : {:5.2f} MPG".format(mae, mse))

輸出結(jié)果為:

測試集的 MAE 為:  2.31 MPG ,MSE 為 :  9.12 MPG

使用模型進行預(yù)測

我們選取了一條測試數(shù)據(jù),使用模型對其 MPG 進行預(yù)測。

predictions = model.predict(test_data[:1]).flatten()
predictions

結(jié)果為 :

array([15.573855], dtype=float32)

而實際的測試樣本數(shù)據(jù) MPG 為 15.0 ,可以看出與預(yù)測值有 0.573855 的誤差,其實我們還可以搭建更加復(fù)雜的模型,選擇更加多的特征來進行模型的訓(xùn)練,理論上可以達到更小的預(yù)測誤差。

展示沒有進行歸一化操作的訓(xùn)練過程

我們將沒有進行歸一化的數(shù)據(jù)在訓(xùn)練過程中的指標情況進行展示,可以看出來訓(xùn)練的指標雜亂無章。所以一般情況下我們推薦對數(shù)據(jù)做歸一化,有利于模型訓(xùn)練的快速收斂。

以上就是Tensorflow 2.1完成對MPG回歸預(yù)測詳解的詳細內(nèi)容,更多關(guān)于Tensorflow MPG回歸預(yù)測的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python如何識別銀行卡卡號?

    Python如何識別銀行卡卡號?

    今天給大家?guī)淼氖怯嘘P(guān)Python的相關(guān)知識,文章圍繞著Python如何識別銀行卡卡號展開,文中有非常詳細的代碼示例及介紹,需要的朋友可以參考下
    2021-06-06
  • python目標檢測基于opencv實現(xiàn)目標追蹤示例

    python目標檢測基于opencv實現(xiàn)目標追蹤示例

    這篇文章主要為大家介紹了python基于opencv實現(xiàn)目標追蹤示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • 安裝pycurl報錯Could not run curl-config: 'curl-config'

    安裝pycurl報錯Could not run curl-config: &ap

    這篇文章主要為大家介紹了安裝pycurl報錯Could not run curl-config: 'curl-config'解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • OPENAI?API?微調(diào)?GPT-3?的?Ada?模型

    OPENAI?API?微調(diào)?GPT-3?的?Ada?模型

    這篇文章主要為大家介紹了OPENAI?API?微調(diào)?GPT-3?的?Ada?模型使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 使用matplotlib在Python中繪制數(shù)據(jù)的詳細教程

    使用matplotlib在Python中繪制數(shù)據(jù)的詳細教程

    Python 在處理數(shù)據(jù)方面非常出色,通常,數(shù)據(jù)集 會包括多個變量和許多實例,這使得很難理解數(shù)據(jù)的情況,數(shù)據(jù)可視化是幫助您識別數(shù)據(jù)模式的一種有用方式,本教程將描述如何使用 matplotlib 在 Python 中繪制數(shù)據(jù),需要的朋友可以參考下
    2024-10-10
  • python轉(zhuǎn)化excel數(shù)字日期為標準日期操作

    python轉(zhuǎn)化excel數(shù)字日期為標準日期操作

    這篇文章主要介紹了python轉(zhuǎn)化excel數(shù)字日期為標準日期操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • scrapy爬蟲實例分享

    scrapy爬蟲實例分享

    這篇文章主要介紹了scrapy爬蟲實例分享,分享了四則Python爬蟲實例,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12
  • numpy.concatenate函數(shù)用法詳解

    numpy.concatenate函數(shù)用法詳解

    本文主要介紹了numpy.concatenate函數(shù)用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2023-02-02
  • Python 如何利用ffmpeg 處理視頻素材

    Python 如何利用ffmpeg 處理視頻素材

    ffmpeg是一套可以用來記錄、轉(zhuǎn)換數(shù)字音頻、視頻,并能將其轉(zhuǎn)化為流的開源計算機程序,使用這個神器,便可以處理各種視頻素材內(nèi)容,極度舒適。本文將介紹如何利用ffmpeg對視頻素材進行處理,感興趣的可以了解一下
    2021-11-11
  • python通過scapy獲取局域網(wǎng)所有主機mac地址示例

    python通過scapy獲取局域網(wǎng)所有主機mac地址示例

    這篇文章主要介紹了python通過scapy獲取局域網(wǎng)所有主機mac地址示例,需要的朋友可以參考下
    2014-05-05

最新評論

水富县| 湄潭县| 肥东县| 惠安县| 三原县| 镇远县| 疏勒县| 丁青县| 拉孜县| 万州区| 古丈县| 宜州市| 灌南县| 读书| 镇坪县| 盈江县| 沾益县| 乐业县| 尚志市| 旅游| 清新县| 台前县| 西城区| 应城市| 汤原县| 河源市| 南开区| 泉州市| 沐川县| 东丽区| 苏州市| 平江县| 同心县| 镇赉县| 平顶山市| 新竹市| 大丰市| 华容县| 峨眉山市| 东莞市| 当雄县|