<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文的主要內容是使用 cpu 版本的 tensorflor-2.1 完成對 Auto MPG 資料集的迴歸預測任務。
(1)Auto MPG 資料集描述了汽車燃油效率的特徵值和標籤值,我們通過模型的學習可以從特徵中找到規律,最後以最小的誤差來預測目標 MPG 。
(2)我們使用 keras 自帶的函數可以直接從網路上下載資料儲存到本地。
(3)每行都包含 MPG 、氣缸、排量、馬力、重量、加速、車型年份、原產地等八列資料,其中 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','氣缸','排量','馬力','重量', '加速', '車型年份', '原產地'] raw_dataset = pd.read_csv(dataset_path, names=column_names, na_values = "?", comment='t', sep=" ", skipinitialspace=True) dataset = raw_dataset.copy()
(1)因為資料中存在一些空值,會影響我們對於特徵的計算和目標的預測,所以將資料中存在空資料的行刪除掉。
dataset = dataset.dropna()
(2)因為“原產地”這一列總共只有 1、2、3 三種值,分別表示三個國家,所以我們將他們各自提出來單獨做成一列,這樣就相當於給每個國家類別轉換成了 ont-hot 。
origin = dataset.pop('原產地') dataset['阿美莉卡'] = (origin == 1)*1.0 dataset['毆們'] = (origin == 2)*1.0 dataset['小日本子'] = (origin == 3)*1.0
(3)按照一定的比例,取 90% 的資料為訓練資料,取 10% 的資料為測試資料。
train_datas = dataset.sample(frac=0.9, random_state=0) test_datas = dataset.drop(train_dataset.index)
(4) 這裡主要是使用一些內建的函數來檢視訓練集對每一列資料的各種常見的統計指標情況,主要有 count、mean、std、min、25%、50%、75%、max ,這樣省去了我們後邊的計算,直接使用即可。
train_stats = train_datas.describe() train_stats.pop("MPG") train_stats = train_stats.transpose()
(5)資料中的 MPG 就是我們需要預測的迴歸目標,我們將這一列從訓練集和測試集中彈出,單獨做成標籤。 MPG 意思就是 Miles per Gallon ,這是一個衡量一輛汽車在郵箱中只加一加侖汽油或柴油時可以行駛多少英里的中要指標。
train_labels = train_datas.pop('MPG') test_labels = test_datas.pop('MPG')
(6)這裡主要是對訓練資料和測試資料進行歸一化,將每個特徵應獨立縮放到相同範圍,因為當輸入資料特徵值存在不同範圍時,不利於模型訓練的快速收斂,我在文章最後的第七節中放了一張沒有進行資料歸一化後模型訓練評估指標,可以看到很雜亂無章。
def norm(stats, x): return (x - stats['mean']) / stats['std'] train_datas = norm(train_stats, train_datas) test_datas = norm(train_stats, test_datas)
搭建深度學習模型、並完成模型的設定和編譯
這裡主要是搭建深度學習模型、設定模型並編譯模型。
(1)模型主要有三層:
(2)模型中優化器這裡選用 RMSprop ,學習率為 0.001 。
(3)模型中的損失值指標是 MSE ,MSE 其實就是均方差,該統計引數是模型預測值和原始樣本的 MPG 值誤差的平方和的均值。
(4)模型的評估指標選用 MAE 和 MSE ,MSE 和上面的一樣,MAE 是平均絕對誤差,該統計引數指的就是模型預測值與原始樣本的 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()
(1)這裡使用訓練集資料和標籤進行模型訓練,總共需要進行 1000 個 epoch ,並且在訓練過程中選取訓練資料的 20% 作為驗證集來評估模型效果,為了避免存在過擬合的現象,這裡我們用 EarlyStopping 技術來進行優化,也就是當經過一定數量的 epoch (我們這裡定義的是 20 )後沒有改進效果,則自動停止訓練。
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])
訓練過程的指標輸出如下,可以看到到了第 106 次 epoch 之後就停止了訓練:
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)這裡也展示的是模型在訓練過程,使用訓練集和驗證集的 mae 、mse 繪製的兩幅圖片,我們可以看到在到達 100 多個 epoch 之後,訓練過程就終止了,避免了模型的過擬合。
loss, mae, mse = model.evaluate(test_datas, test_labels, verbose=2) print("測試集的 MAE 為: {:5.2f} MPG ,MSE 為 : {:5.2f} MPG".format(mae, mse))
輸出結果為:
測試集的 MAE 為: 2.31 MPG ,MSE 為 : 9.12 MPG
我們選取了一條測試資料,使用模型對其 MPG 進行預測。
predictions = model.predict(test_data[:1]).flatten() predictions
結果為 :
array([15.573855], dtype=float32)
而實際的測試樣本資料 MPG 為 15.0 ,可以看出與預測值有 0.573855 的誤差,其實我們還可以搭建更加複雜的模型,選擇更加多的特徵來進行模型的訓練,理論上可以達到更小的預測誤差。
我們將沒有進行歸一化的資料在訓練過程中的指標情況進行展示,可以看出來訓練的指標雜亂無章。所以一般情況下我們推薦對資料做歸一化,有利於模型訓練的快速收斂。
以上就是Tensorflow 2.1完成對MPG迴歸預測詳解的詳細內容,更多關於Tensorflow MPG迴歸預測的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45