700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > python时间序列分析航空旅人_Python深度学习教程:LSTM时间序列预测小练习—国航乘客

python时间序列分析航空旅人_Python深度学习教程:LSTM时间序列预测小练习—国航乘客

时间:2021-05-23 18:36:48

相关推荐

python时间序列分析航空旅人_Python深度学习教程:LSTM时间序列预测小练习—国航乘客

Python深度学习教程:LSTM时间序列预测小练习—国航乘客数量预测

参考数据:

数据一共两列,左边是日期,右边是乘客数量

对数据做可视化:importmath

importnumpyasnp

importpandasaspd

importmatplotlib.pyplotasplt

frompandasimportread_csv

fromkeras.modelsimportSequential

fromkeras.layersimportDense

fromkeras.layersimportLSTM

fromsklearn.preprocessingimportMinMaxScaler

fromsklearn.metricsimportmean_squared_error

#loaddataset

dataframe=read_csv('./international-airline-passengers.csv',usecols=[1],header=None,engine='python',skipfooter=3)

dataset=dataframe.values

#将整型变为float

dataset=dataset.astype('float32')

plt.plot(dataset)

plt.show()

可视化结果:

下面开始进行建模:

完整代码:importmath

importnumpy

importpandasaspd

importmatplotlib.pyplotasplt

frompandasimportread_csv

fromkeras.modelsimportSequential

fromkeras.layersimportDense

fromkeras.layersimportLSTM

fromsklearn.preprocessingimportMinMaxScaler

fromsklearn.metricsimportmean_squared_error

defcreate_dataset(dataset,look_back=1):

dataX,dataY=[],[]

foriinrange(len(dataset)-look_back-1):

a=dataset[i:i+look_back,0]

b=dataset[i+look_back,0]

dataX.append(a)

dataY.append(b)

returnnumpy.array(dataX),numpy.array(dataY)

numpy.random.seed(7)

dataframe=read_csv('./international-airline-passengers.csv',usecols=[1],header=None,engine='python')

dataset=dataframe.values

dataset=dataset.astype('float32')

scaler=MinMaxScaler(feature_range=(0,1))

dataset=scaler.fit_transform(dataset)

train_size=int(len(dataset)*0.67)

test_size=len(dataset)-train_size

train,test=dataset[0:train_size,:],dataset[train_size:len(dataset),:]

look_back=1

trainX,trainY=create_dataset(train,look_back)

testX,testY=create_dataset(test,look_back)

#reshapeinputtobe[samples,timesteps,features]

trainX=numpy.reshape(trainX,(trainX.shape[0],look_back,trainX.shape[1]))

testX=numpy.reshape(testX,(testX.shape[0],look_back,testX.shape[1]))

#createandfittheLSTMnetwork

model=Sequential()

model.add(LSTM(4,input_shape=(1,look_back)))

model.add(Dense(1))

pile(loss='mean_squared_error',optimizer='adam')

model.fit(trainX,trainY,epochs=100,batch_size=1,verbose=2)

#makepredictions

trainPredict=model.predict(trainX)

testPredict=model.predict(testX)

#invertpredictions

trainPredict=scaler.inverse_transform(trainPredict)

trainY=scaler.inverse_transform([trainY])

testPredict=scaler.inverse_transform(testPredict)

testY=scaler.inverse_transform([testY])

#calculaterootmeansquarederror

trainScore=math.sqrt(mean_squared_error(trainY[0],trainPredict[:,0]))

print('TrainScore:%.2fRMSE'%(trainScore))

testScore=math.sqrt(mean_squared_error(testY[0],testPredict[:,0]))

print('TestScore:%.2fRMSE'%(testScore))

#shifttrainpredictionsforplotting

trainPredictPlot=numpy.empty_like(dataset)

trainPredictPlot[:,:]=numpy.nan

trainPredictPlot[look_back:len(trainPredict)+look_back,:]=trainPredict

#shifttestpredictionsforplotting

testPredictPlot=numpy.empty_like(dataset)

testPredictPlot[:,:]=numpy.nan

testPredictPlot[len(trainPredict)+(look_back*2)+1:len(dataset)-1,:]=testPredict

#plotbaselineandpredictions

plt.plot(scaler.inverse_transform(dataset))

plt.plot(trainPredictPlot)

plt.plot(testPredictPlot)

plt.show()

运行结果:

本次的Python学习教程!

python时间序列分析航空旅人_Python深度学习教程:LSTM时间序列预测小练习—国航乘客数量预测...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。