繁体   English   中英

我可以一次预测Keras时间序列的未来6个月

[英]Keras time series can I predict next 6 month in one time

我使用keras进行时间序列预测。 我的代码可以通过预测下一个月来预测下一个6个月,然后再次将其输入以进行下个月的预测,直到完成6个月为止。 这意味着一个月预测6次。 我可以一次预测下一个6个月吗?

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from keras.layers import LSTM
from pandas.tseries.offsets import MonthEnd
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import Dense, Dropout
import keras.backend as K
from keras.layers import Bidirectional
from keras.layers import Embedding
from keras.layers import GRU

df = pd.read_csv('D://data.csv',
             engine='python')

df['DATE_'] = pd.to_datetime(df['DATE_']) + MonthEnd(1)
df = df.set_index('DATE_')
df.head()

split_date = pd.Timestamp('03-01-2015')

train = df.loc[:split_date, ['data']]
test = df.loc[split_date:, ['data']]
sc = MinMaxScaler()

train_sc = sc.fit_transform(train)
test_sc = sc.transform(test)

X_train = train_sc[:-1]
y_train = train_sc[1:]

X_test = test_sc[:-1]
y_test = test_sc[1:]

K.clear_session()
model = Sequential()
model.add(Dense(12, input_dim=1, activation='relu'))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.summary()

model.fit(X_train, y_train, epochs=200, batch_size=2)

y_pred = model.predict(X_test)

real_pred = sc.inverse_transform(y_pred)
real_test = sc.inverse_transform(y_test)

print("Predict Value")
print(real_pred)

print("Test Value")
print(real_test)

是的,通过将输出层(最后一层)从Dense(1)更改为Dense(6)。 当然,您还必须将y_train和y_test更改为形状(1,6)而不是(1,1)。

祝你好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM