【问题标题】:Keras time series can I predict next 6 month in one timeKeras 时间序列我可以一次预测下一个 6 个月吗
【发布时间】:2018-11-11 19:02:54
【问题描述】:

我使用 keras 进行时间序列预测。我的代码可以通过预测下一个月来预测接下来的 6 个月,然后将其输入到下个月再次预测,直到完成 6 个月。这意味着预测 1 个月 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)

【问题讨论】:

    标签: python machine-learning keras lstm


    【解决方案1】:

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

    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-21
      • 2018-03-09
      • 1970-01-01
      • 2018-11-20
      • 2018-03-23
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多