我在用神经网络做时间序列预测。只要我向网络提供预测步长=0(对于Y,取参考日的值),它看起来就没问题。将预测步长增加N (对于Y,取参考日的值+ N)会使预测图变平,而不是将其移位N。您知道会出什么问题吗?
编辑
至于模型:
model = Sequential()
model.add(Dense(14, input_dim=14, kernel_initializer='normal', activation='relu'))
model.add(Dense(7, kernel_initializer='normal', activation='relu'))
model.add(Dense(1, kernel_initializer='normal'))
model.compile(loss='mean_squared_error', optimizer='rmsprop', metrics=['mae'])至于数据准备
data0 = renameColumns(addTimestampForwardShift(history[['year', 'month', 'day', 'hour', 'high']], timeShift), 0)
data1 = renameColumns(addTimestampBackwardShift(history[['year', 'month', 'day', 'hour', 'high']], 1), -1)
data2 = renameColumns(addTimestampBackwardShift(history[['year', 'month', 'day', 'hour', 'high']], 2), -2)
data3 = renameColumns(addTimestampBackwardShift(history[['year', 'month', 'day', 'hour', 'high']], 3), -3)
data4 = renameColumns(addTimestampBackwardShift(history[['year', 'month', 'day', 'hour', 'high']], 4), -4)
data5 = renameColumns(addTimestampBackwardShift(history[['year', 'month', 'day', 'hour', 'high']], 5), -5)
data6 = renameColumns(addTimestampBackwardShift(history[['year', 'month', 'day', 'hour', 'high']], 6), -6)
data7 = renameColumns(addTimestampBackwardShift(history[['year', 'month', 'day', 'hour', 'high']], 7), -7)
data8 = renameColumns(addTimestampBackwardShift(history[['year', 'month', 'day', 'hour', 'high']], 8), -8)
data9 = renameColumns(addTimestampBackwardShift(history[['year', 'month', 'day', 'hour', 'high']], 9), -9)
data10 = renameColumns(addTimestampBackwardShift(history[['year', 'month', 'day', 'hour', 'high']], 10), -10)
data11 = renameColumns(addTimestampBackwardShift(history[['year', 'month', 'day', 'hour', 'high']], 11), -11)
data12 = renameColumns(addTimestampBackwardShift(history[['year', 'month', 'day', 'hour', 'high']], 12), -12)
data13 = renameColumns(addTimestampBackwardShift(history[['year', 'month', 'day', 'hour', 'high']], 13), -13)
data14 = renameColumns(addTimestampBackwardShift(history[['year', 'month', 'day', 'hour', 'high']], 14), -14)
data = pandas.merge(data0, data1, on=['timestamp'], how='left')
data = pandas.merge(data, data2, on=['timestamp'], how='left')
data = pandas.merge(data, data3, on=['timestamp'], how='left')
data = pandas.merge(data, data4, on=['timestamp'], how='left')
data = pandas.merge(data, data5, on=['timestamp'], how='left')
data = pandas.merge(data, data6, on=['timestamp'], how='left')
data = pandas.merge(data, data7, on=['timestamp'], how='left')
data = pandas.merge(data, data8, on=['timestamp'], how='left')
data = pandas.merge(data, data9, on=['timestamp'], how='left')
data = pandas.merge(data, data10, on=['timestamp'], how='left')
data = pandas.merge(data, data11, on=['timestamp'], how='left')
data = pandas.merge(data, data12, on=['timestamp'], how='left')
data = pandas.merge(data, data13, on=['timestamp'], how='left')
data = pandas.merge(data, data14, on=['timestamp'], how='right')
data = data.dropna()
data = data[['high0',
'high-1',
'high-2',
'high-3',
'high-4',
'high-5',
'high-6',
'high-7',
'high-8',
'high-9',
'high-10',
'high-11',
'high-12',
'high-13',
'high-14']]
normalized = (data - data.mean()) / (data.max() - data.min())
normalized = normalized.values
X = normalized[:, 1:]
Y = normalized[:, 0]
seed = int(time.time())
numpy.random.seed(seed)
model.fit(X, Y)对于结果数据(timeshift=12):
year0 month0 day0 hour0 high0 timestamp year-1 month-1 day-1 \
0 2014.0 12.0 28.0 0.0 5.15 2014-12-16 2014.0 12.0 15.0
1 2014.0 12.0 29.0 0.0 5.72 2014-12-17 2014.0 12.0 16.0
2 2014.0 12.0 30.0 0.0 5.95 2014-12-18 2014.0 12.0 17.0
3 2014.0 12.0 31.0 0.0 5.75 2014-12-19 2014.0 12.0 18.0
hour-1 high-1 year-2 month-2 day-2 hour-2 high-2 year-3 month-3 \
0 0.0 5.21 2014.0 12.0 14.0 0.0 5.21 2014.0 12.0
1 0.0 5.50 2014.0 12.0 15.0 0.0 5.21 2014.0 12.0
2 0.0 5.90 2014.0 12.0 16.0 0.0 5.50 2014.0 12.0
3 0.0 5.89 2014.0 12.0 17.0 0.0 5.90 2014.0 12.0
rest according to the same pattern发布于 2018-04-13 04:42:05
从这个开始,看看这是否会从平面输出中提高它。
https://stackoverflow.com/questions/49721127
复制相似问题