我尝试使用教程here,其中我们有两个协变量来预测目标。
本教程使用.stack()
将两个协变量相加。我不清楚如何使用此函数向模型添加两个以上的协变量。
我尝试了以下代码:
from darts.models import BlockRNNModel
my_covariate = (tg.sine_timeseries(length=LENGTH,
value_frequency=(1/14),
freq='D',
column_name='my_covariate')
+ 0.4 * tg.gaussian_timeseries(length=LENGTH, freq='D'))
brnn_melting_and_rain = BlockRNNModel(input_chunk_length=30,
output_chunk_length=10,
n_rnn_layers=2)
brnn_melting_and_rain.fit(flow_train,
# past_covariates=melting.stack(rainfalls).stack(rainfalls),
past_covariates=[melting,rainfalls,my_covariate],
epochs=10,
verbose=True)
eval_model(brnn_melting_and_rain,
past_covariates=melting.stack(rainfalls))
但我得到了以下错误:
ValueError:提供的目标序列必须与提供的协变量序列具有相同的长度。
我试着阅读DARTS的文档,但是没有关于如何使用past_covariates的明确说明,具体来说,我应该在这里传递什么数据类型以及是否有任何其他要求。
3条答案
按热度按时间xmjla07d1#
从你的代码和你提供的链接中复制粘贴,我已经设法得到了一个工作代码(没有错误),但我不确定这是你想要的。
主要的事情是用
melting.stack(rainfalls).stack(my_covariate)
堆叠时间序列,然后将其传递给eval_model
方法。w51jfk4q2#
这应该可以解决这个问题,并允许您使用协变量时间序列拟合模型。
u59ebvdq3#
使用API的
concatenate
正确堆叠许多时间序列,而不是传递列表或调用许多stack
调用(例如避免“堆叠”)。例如,以这种方式构建多元数据沿着自定义要素
,然后在此多变量时间序列上训练
注意:虽然不推荐使用,但“堆叠堆栈”本质上等同于串联