(And将它们全部绘制在同一图中)。
我一直在关注"天气预报的时间序列预报"代码,在这里找到:
https://keras.io/examples/timeseries/timeseries_weather_forecasting/
文章说:
"上面的训练模型现在能够对验证集中的5组值进行预测。"
它使用下面的代码来获取预测值并绘制它们:
def show_plot(plot_data, delta, title):
labels = ["History", "True Future", "Model Prediction"]
marker = [".-", "rx", "go"]
time_steps = list(range(-(plot_data[0].shape[0]), 0))
if delta:
future = delta
else:
future = 0
plt.title(title)
for i, val in enumerate(plot_data):
if i:
plt.plot(future, plot_data[i], marker[i], markersize=10, label=labels[i])
else:
plt.plot(time_steps, plot_data[i].flatten(), marker[i], label=labels[i])
plt.legend()
plt.xlim([time_steps[0], (future + 5) * 2])
plt.xlabel("Time-Step")
plt.show()
return
for x, y in dataset_val.take(5):
show_plot(
[x[0][:, 1].numpy(), y[0].numpy(), model.predict(x)[0]],
12,
"Single Step Prediction",
)
在我的计算机中,为了将序列下采样至1小时......我直接修改了输入数据的频率,并使用"sampling_rate = 1",而不是使用"sampling_rate = 6"
现在,考虑到模型拟合正确...如果我想获得未来500个间隔的预测,而不是仅5个间隔,我需要修改什么?dataset_val.take(500)
或者别的什么?
开头的配置还说:
split_fraction = 0.715
train_split = int(split_fraction * int(df.shape[0]))
step = 6
past = 720
future = 72
learning_rate = 0.001
batch_size = 256
epochs = 10
我现在需要为过去和未来使用什么值(如果我的数据频率为1小时,并且我想预测未来500点?)
未来= 500
past =?(似乎是用于训练的向后时间戳数量)
δ值呢?它固定在12,但似乎是未来的值。
1条答案
按热度按时间p3rjfoxz1#
据消息来源说
https://github.com/keras-team/keras-io/blob/master/examples/timeseries/timeseries_weather_forecasting.py,这是型号
如你所见,它使用1个单位的密度作为最后一层。例如,如果你想要2个预测,你应该使用2个单位的密度(作为最后一层),并且应该小心(X_train,Y_train)和(X_Validation,Y_Validation)的输入形状,因为你期望的Y作为默认值有1个单位,所以你可能应该转换它。简单的例子默认值X:1,Y:1更改为X:1,Y:1,2
并且可能Y个数据应该被移位(N),其中N正好是最后一层中的单元数(密集)。
如果你只是想预测一个更大的时间框架,你可以把你的整个数据转换成更大的一个。例如,我们的默认时间框架和数据(天气)是每小时。然后,我们可以把我们的数据转换成每日(这是x24),然后我们可以预测每日或同样的事情(X30),我们可以预测每月,等等。