日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

回归:预测燃油效率

發布時間:2024/10/8 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 回归:预测燃油效率 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

回歸:預測燃油效率

在一個回歸問題中,我們的目標是預測一個連續值的輸出,比如價格或概率。這與一個分類問題形成對比,我們的目標是從一系列類中選擇一個類(例如,一張圖片包含一個蘋果或一個橘子,識別圖片中的水果)。

本筆記本使用經典的[auto-mpg](https://archive.ics.uci.edu/ml/datasets/auto+mpg)數據集,建立了預測70年代末和80年代初汽車燃油效率的模型。為了做到這一點,我們將為該模型提供從那個時期開始的許多汽車的描述。此描述包括以下屬性:氣缸、排量、馬力和重量。

此示例使用“tf.keras”API,有關詳細信息,請參閱[本指南](https://www.tensorflow.org/guide/keras)。

import pathlib import matplotlib.pyplot as plt import pandas as pd import seaborn as sns import keras from keras import layers %matplotlib inline

The Auto MPG dataset

The dataset is available from the UCI Machine Learning Repository.

Get the data

First download the dataset.

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 'C:\\Users\\YIUYE\\.keras\\datasets\\auto-mpg.data'

Import it using 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() MPGCylindersDisplacementHorsepowerWeightAccelerationModel YearOrigin393394395396397
27.04140.086.02790.015.6821
44.0497.052.02130.024.6822
32.04135.084.02295.011.6821
28.04120.079.02625.018.6821
31.04119.082.02720.019.4821

Clean the data

The dataset contains a few unknown values.

dataset.isnull().sum() MPG 0 Cylinders 0 Displacement 0 Horsepower 6 Weight 0 Acceleration 0 Model Year 0 Origin 0 dtype: int64

To keep this initial tutorial simple drop those rows.

dataset = dataset.dropna()

The "Origin" column is really categorical, not numeric. So convert that to a one-hot:

origin = dataset.pop('Origin') dataset['USA'] = (origin == 1)*1.0 dataset['Europe'] = (origin == 2)*1.0 dataset['Japan'] = (origin == 3)*1.0 dataset.tail() MPGCylindersDisplacementHorsepowerWeightAccelerationModel YearUSAEuropeJapan393394395396397
27.04140.086.02790.015.6821.00.00.0
44.0497.052.02130.024.6820.01.00.0
32.04135.084.02295.011.6821.00.00.0
28.04120.079.02625.018.6821.00.00.0
31.04119.082.02720.019.4821.00.00.0

現在將數據集拆分為一個訓練集和一個測試集。

我們將在模型的最終評估中使用測試集。

train_dataset = dataset.sample(frac=0.8,random_state=0) test_dataset = dataset.drop(train_dataset.index) sns.pairplot(train_dataset[[ "Cylinders", "Displacement", "Weight"]], diag_kind="kde") sns.set()

Also look at the overall statistics:

train_stats = train_dataset.describe() train_stats.pop("MPG") train_stats = train_stats.transpose() train_stats countmeanstdmin25%50%75%maxCylindersDisplacementHorsepowerWeightAccelerationModel YearUSAEuropeJapan
314.05.4777071.6997883.04.004.08.008.0
314.0195.318471104.33158968.0105.50151.0265.75455.0
314.0104.86942738.09621446.076.2594.5128.00225.0
314.02990.251592843.8985961649.02256.502822.53608.005140.0
314.015.5592362.7892308.013.8015.517.2024.8
314.075.8980893.67564270.073.0076.079.0082.0
314.00.6242040.4851010.00.001.01.001.0
314.00.1783440.3834130.00.000.00.001.0
314.00.1974520.3987120.00.000.00.001.0

Split features from labels

Separate the target value, or “label”, from the features. This label is the value that you will train the model to predict.

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

Normalize the data

Look again at the train_stats block above and note how different the ranges of each feature are.

規范化使用不同尺度和范圍的特征是一個很好的實踐。雖然模型可能在沒有特征規范化的情況下收斂,但它使訓練變得更加困難,并且使生成的模型依賴于輸入中使用的單元的選擇。

注意:盡管我們有意只從訓練數據集生成這些統計信息,但這些統計信息也將用于規范化測試數據集。我們需要這樣做,以將測試數據集投影到模型所訓練的相同分發中。

def norm(x):return (x - train_stats['mean']) / train_stats['std'] normed_train_data = norm(train_dataset) normed_test_data = norm(test_dataset) 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 = keras.optimizers.RMSprop(0.001)model.compile(loss='mean_squared_error',optimizer=optimizer,metrics=['mean_absolute_error', 'mean_squared_error'])return model model = build_model() model.summary() _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= dense_10 (Dense) (None, 64) 640 _________________________________________________________________ dense_11 (Dense) (None, 64) 4160 _________________________________________________________________ dense_12 (Dense) (None, 1) 65 ================================================================= Total params: 4,865 Trainable params: 4,865 Non-trainable params: 0 _________________________________________________________________

Now try out the model. Take a batch of 10 examples from the training data and call model.predict on it.

example_batch = normed_train_data[:10] example_result = model.predict(example_batch) example_result array([[-0.03468257],[-0.01342154],[-0.15384783],[-0.18010283],[ 0.03922582],[-0.12172151],[ 0.10603201],[ 0.2442987 ],[ 0.00099315],[ 0.18530795]], dtype=float32)

It seems to be working, and it produces a result of the expected shape and type.

Train the model

Train the model for 1000 epochs, and record the training and validation accuracy in the history object.

# Display training progress by printing a single dot for each completed epoch class 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.epoch hist.tail() lossmean_absolute_errormean_squared_errorval_lossval_mean_absolute_errorval_mean_squared_errorepoch995996997998999
2.0755180.9409432.0755188.9137262.3518398.913726995
2.1301110.9535612.1301119.7698842.4382829.769884996
2.2210400.9512582.2210409.6647082.3828889.664708997
2.3018700.9804072.3018709.9343112.4255059.934311998
2.0025800.8876442.0025809.4849822.4147429.484982999
def plot_history(history):hist = pd.DataFrame(history.history)hist['epoch'] = history.epochplt.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.ylim([0,5])plt.legend()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.ylim([0,20])plt.legend()plt.show()plot_history(history)

此圖顯示在大約100個周期后,驗證錯誤幾乎沒有改善,甚至惡化。讓我們更新“model.fit”調用,以便在驗證分數沒有提高時自動停止培訓。我們將使用一個早期的回調來測試每個時代的訓練條件。如果一個設定的時間段沒有顯示出改善,那么自動停止訓練。

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

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.79 MPG

Make predictions

Finally, predict MPG values using data in the testing set:

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_labels plt.hist(error, bins = 25) plt.xlabel("Prediction Error [MPG]") _ = plt.ylabel("Count")

它不是很高斯的,但是我們可以預期,因為樣本的數量非常小。

總結

以上是生活随笔為你收集整理的回归:预测燃油效率的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩精品在线观看视频 | 成人毛片在线视频 | 综合视频一区 | 色综合久久久 | 色啪综合| 国产chinese| 精品国产69 | 特黄特色大片免费视频大全 | 成人区精品一区二区婷婷 | 9l视频自拍蝌蚪9l视频 | 影音先锋黑人 | 夜夜天天操 | 国产又粗又长 | www.99爱| 国产精品无码中文 | 久久精品国产亚洲av高清色欲 | 亚洲最大福利 | 中文字幕1区2区 | 涩涩99 | 国产aaa大片 | 中文字幕免费高清网站 | 亚洲一区二区日韩欧美 | 四虎免费视频 | 亚洲精品视频免费观看 | 亚洲精品无码永久在线观看 | 免费看一级视频 | 日韩成人高清视频在线观看 | 一级片久久久 | 一级aaaa毛片| 一个人免费在线观看视频 | 成人国产精品一区二区 | 四季av日韩精品一区 | 亚洲一区二区视频在线观看 | 一级片黄色片 | 免费无遮挡在线观看视频网站 | 99热这里只有精品在线观看 | 亚洲成熟丰满熟妇高潮xxxxx | 激情影音| 亚洲成年人网站在线观看 | 亚洲精品无码久久久久久久 | 色偷偷综合 | 国产aⅴ片 | 99成人精品 | 亚洲精品人 | h片免费网站 | 国产免费av一区二区 | aaa一级黄色片 | 亚洲av无码一区二区三区人妖 | 理论片大全免费理伦片 | 乳色吐息在线看 | 久天堂| 欧美天天搞 | 超碰人人99| 亚洲在线观看视频 | 国内精久久久久久久久久人 | videos麻豆 | 亚洲调教欧美在线 | 黄色一区二区三区四区 | 国产三级第一页 | 青苹果av | 精品人妻少妇AV无码专区 | 久久免费福利视频 | 亚洲激情午夜 | 精品人伦一区二区三区 | 美女野外找人搭讪啪啪 | 国产精品高潮呻吟视频 | 干干干操操操 | 精品久久久久久久久久久aⅴ | 禁漫天堂黄漫画无遮挡观看 | 农村妇女毛片 | 鬼灭之刃柱训练篇在线观看 | 日韩女女同性aa女同 | 青青草久久爱 | 欧美性生交xxxxx | 日本天堂网在线观看 | 欧洲金发美女大战黑人 | 国产色站 | 韩国美女主播跳舞 | 刘亦菲毛片一区二区三区 | 国产第一色 | www午夜视频| 国产伦精品一区二区三区千人斩 | 国产中文字幕三区 | 亚洲男人天堂2020 | 天天草天天操 | 欧美综合一区二区三区 | 又粗又大又硬又长又爽 | 不卡视频一区二区 | 很污的网站 | 午夜天堂av | 成人精品亚洲人成在线 | 日韩av一级片 | 日本精品视频一区 | 手机电影在线观看 | 免费毛片观看 | 日韩欧美一区二区三区在线观看 | 日韩中文字幕国产 | 男阳茎进女阳道视频大全 | 麻豆视频在线免费看 |