欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報邀請碼778899分享:CNN-LSTM回歸預(yù)測模型

柚子快報邀請碼778899分享:CNN-LSTM回歸預(yù)測模型

http://yzkb.51969.com/

?使用CNN-LSTM搭建一個簡單的回歸預(yù)測模型,對油耗數(shù)據(jù)進行預(yù)測分析

首先導(dǎo)入必要的包,主要用到numpy,pandas,matplotlib和tensorflow下面的一些網(wǎng)絡(luò)模型。

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

from tensorflow.keras.models import Sequential

from tensorflow.keras.utils import plot_model

from sklearn.model_selection import train_test_split

from tensorflow.keras.layers import Dense, Dropout,Flatten,Activation,LSTM

from sklearn.preprocessing import MinMaxScaler

采用pandas讀取數(shù)據(jù),數(shù)據(jù)集部分展示如下,其中以發(fā)動機燃油消耗率為目標(biāo)值,其余變量為特征值。

數(shù)據(jù)預(yù)處理,數(shù)據(jù)集進行歸一化處理。

X = data.iloc[:,1:11]

Y = data.iloc[:,0:1]

X_transfer = MinMaxScaler()

X_transfer = MinMaxScaler()

x_MM = transfer.fit_transform(x)

Y_MM = transfer.fit_transform(Y)

歸一化后數(shù)據(jù)由Datafram格式轉(zhuǎn)換為ndarray格式,歸一化后的數(shù)據(jù)展示如下

歸一化完成后對數(shù)據(jù)集進行切分,采用SKlearn下面的train_test_splist方法對數(shù)據(jù)進行切分,按照3:1的比例劃分訓(xùn)練集和測試集。

x_train, x_test, Y_train, Y_test = train_test_split(X_MM, Y_MM, test_size=0.25, random_state=10,shuffle=False)

數(shù)據(jù)集劃分完畢后,對特征數(shù)據(jù)添加時間步長,由于本數(shù)據(jù)集采用單步預(yù)測,故不用特別定義時間步長函數(shù)來構(gòu)造時間滑窗,直接使用numpy的reshape方法即可。

X_train = x_train.reshape(x_train.shape[0], 1, x_train.shape[1])

X_test= x_test.reshape(x_test.shape[0], 1, x_test.shape[1])

?添加時間步長之后的特征數(shù)據(jù)形狀如下。

?以上完成了對數(shù)據(jù)的基本處理,數(shù)據(jù)處理完畢之后,開始模型的搭建。構(gòu)建一個由一維卷積層和LSTM組合而成的CNN-LSTM神經(jīng)網(wǎng)絡(luò)。網(wǎng)絡(luò)代碼如下。

#搭建CNN-LSTM融合神經(jīng)網(wǎng)絡(luò)

model = Sequential()

model.add(Conv1D(filters=32, kernel_size=3, padding='same', strides=1,

activation='relu', input_shape=(X_train.shape[1], X_train.shape[2]))) # input_shape=(X_train.shape[1], X_train.shape[2])

model.add(MaxPooling1D(pool_size=1))

model.add(LSTM(16, return_sequences=True))

model.add(LSTM(8, return_sequences=False))

model.add(Dense(1))

model.compile(loss='mse', optimizer='adam')

?網(wǎng)絡(luò)搭建完成之后,對網(wǎng)絡(luò)進行擬合訓(xùn)練。

# 擬合網(wǎng)絡(luò)

history = model.fit(X_train, Y_train, epochs=100, batch_size=256, shuffle=False,validation_data=(X_test,Y_test)

可以看到訓(xùn)練過程,還是效果還是非常好的.

?訓(xùn)練完整之后對模型進行測試集和驗證集預(yù)測。

#在訓(xùn)練集和測試集上的擬合結(jié)果

Y_train_predict_CNN_LSTM= model.predict(X_train)

Y_test_predict_CNN_LSTM= model.predict(X_test)

#反歸一化

Y_train_predict_CNN_LSTM_inver = X_transfer .inverse_transform(Y_train_predict_CNN_LSTM)

Y_test_predict_CNN_LSTM_inver = X_transfer .inverse_transform(Y_test_predict_CNN_LSTM)

Y_train_inver = transfer_y.inverse_transform(Y_train)

Y_test_inver = transfer_y.inverse_transform(Y_test)

輸出模型評價指標(biāo)。

#輸出結(jié)果

from sklearn.metrics import mean_absolute_error,mean_squared_error,r2_score

print('CNN-LSTM訓(xùn)練集上的MAE/MSE/r2')

print(mean_absolute_error(Y_train_predict_CNN_LSTM_inver,Y_train_inver))

print(mean_squared_error(Y_train_predict_CNN_LSTM_inver,Y_train_inver) )

print(r2_score(Y_train_predict_CNN_LSTM_inver,Y_train_inver) )

print('CNN-LTSM測試集上的MAE/MSE/r2')

print(mean_absolute_error(Y_test_predict_CNN_LSTM_inver, Y_test_inver))

print(mean_squared_error(Y_test_predict_CNN_LSTM_inver, Y_test_inver))

print(r2_score(Y_test_predict_CNN_LSTM_inver, Y_test_inver))

?繪制訓(xùn)練Loss曲線。

# 繪制圖像

plt.figure(1,figsize=(12,6),dpi=80)

plt.plot(history.history['loss'], label='Train')

plt.plot(history.history['val_loss'], label='Vavid')

plt.title('loss curve')

plt.legend()

plt.show()

?繪制真實值和預(yù)測值對比圖。

plt.figure(2,figsize=(12,6),dpi=80)

plt.plot(range(len(Y_test_inver)),Y_test,color='k',label='真實值')

plt.plot(range(len(Y_test_CNN_LSTM_inver)),Y_test_predict_CNN_LSTM_inver,color='',label='預(yù)測值')

plt.xlabel('測試樣本數(shù)量',fontsize=20)

plt.ylabel('油耗/(L/h)',fontsize=20)

plt.tick_params(labelsize=20)

plt.legend(fontsize=20)

plt.savefig("真實值和預(yù)測值對比.svg", dpi=80,format="svg")

plt.show()

?需要完整代碼以及咨詢問題的加qq:1019312261,智能算法的改進,智能算法與神經(jīng)網(wǎng)絡(luò)結(jié)合等等。

柚子快報邀請碼778899分享:CNN-LSTM回歸預(yù)測模型

http://yzkb.51969.com/

好文推薦

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18474450.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機訪問

文章目錄