如何修改天气预报示例的Timeseries预测以增加预测数量?



(并将它们绘制在同一张图中)。

我一直在关注"时间序列预报"的天气预报。
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=6"我直接修改了输入数据的频率,我使用"sampling_rate=1">

现在,考虑到模型是合适的…如果我想获得未来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点)?
过去= ?(似乎是用于训练的时间戳的数量)

delta呢?它被固定为12,但它似乎是未来的值。

根据来源
https://github.com/keras-team/keras-io/blob/master/examples/timeseries/timeseries_weather_forecasting.py

inputs = keras.layers.Input(shape=(inputs.shape[1], inputs.shape[2]))
lstm_out = keras.layers.LSTM(32)(inputs)
outputs = keras.layers.Dense(1)(lstm_out)
model = keras.Model(inputs=inputs, outputs=outputs)
model.compile(optimizer=keras.optimizers.Adam(learning_rate=learning_rate), loss="mse")
model.summary()

正如你所看到的,使用1单位Dense作为最后一层。例如,如果你想要2个预测,你应该为Dense(作为最后一层)使用2个单位,并且应该小心(X_train, Y_train)和(X_Validation, Y_Validation)的输入形状,因为你的预期Y作为默认值有1个单位,所以可能你应该转换它。简单的例子默认X:1,Y:1更改为X:1,Y:1,2

和可能Y数据应该被移动(N),其中N恰好是最后一层(Dense)的单元数。


如果你只是想预测一个更大的时间框架,你可以将你的整个数据转换为更大的一个。例如,我们默认的时间框架和数据(天气)是每小时。然后我们可以将我们的数据转换为每日(即x24),然后我们可以预测每日或相同的事情(X30),我们可以预测每月,等等。

最新更新