Python 错误中 Darts 中的未来协变量

问题描述 投票:0回答:1
mydata_train = X_train.copy()
mydata_train['y_train'] = y_train

mydata_test = X_test.copy()
mydata_test['y_test'] = y_test

# Convert your DataFrame to TimeSeries objects for the target variable and covariates
train_series = TimeSeries.from_dataframe(mydata_train, value_cols=['y_train'], fill_missing_dates=True, freq='h')
test_series = TimeSeries.from_dataframe(mydata_test, value_cols=['y_test'], fill_missing_dates=True, freq='h')

train_covariates = TimeSeries.from_dataframe(mydata_train, value_cols=[col for col in mydata_train.columns if col != 'y_train'], fill_missing_dates=True, freq='h')
test_covariates = TimeSeries.from_dataframe(mydata_test, value_cols=[col for col in mydata_test.columns if col != 'y_test'], fill_missing_dates=True, freq='h')

# Initialize the TFT model
model = TFTModel(
    input_chunk_length=24,
    output_chunk_length=12,
    hidden_size=16,  # Example size, adjust based on dataset size and complexity
    lstm_layers=2,  # Number of LSTM layers
    num_attention_heads=4,  # Number of attention heads
    dropout=0.1,  # Dropout rate
    batch_size=16,  # Batch size for training
    n_epochs=1,  # Number of epochs to train
    add_relative_index=False,  # Whether to add a relative index as a feature
    add_encoders=None,  # Additional encoder settings can be specified here
    likelihood=None,  # Can specify a likelihood for probabilistic forecasting
    random_state=42  # Seed for reproducibility
)

# Fit the model
model.fit(series=train_series, past_covariates=None, future_covariates=train_covariates, verbose=True)

# Predict using the model and future covariates
# n = 160 #len(mydata_test)  # Set the forecast horizon
predicted = model.predict(n=12, series=test_series, future_covariates=test_covariates)

任何人都可以帮我解决这个错误吗? ValueError:对于给定的预测范围

n=12
,数据集索引
0
处提供的未来协变量没有延伸到足够远的未来。由于
n <= output_chunk_length
未来协变量必须在时间步
2022-10-01 16:00:00
结束,而现在它们在时间步
2022-10-01 04:00:00
结束。

我只想预测接下来的 12 天,我提供了来自未来协变量的大量信息(近 10 个月),并且我的数据每小时收集一次。

我不知道这个错误到底意味着什么,我对此完全感到困惑。根据这个错误,这意味着我需要直到2022-10-01 16:00:00时间为止的数据信息。但为什么直到这个时候我才需要它?

我还更改了input_chunk_length和output_chunk_length并尝试了许多不同的数字,但什么也没发生,而且我也得到了同样的错误。

python time-series u8darts
1个回答
0
投票

input_chunk_length和output_chunk_length参数确定模型将使用多少历史和未来上下文来进行预测。 input_chunk_length 是用作输入历史的时间步数,output_chunk_length 是模型将预测未来的时间步数。

您看到的错误消息表明,模型预计未来的协变量在最后一个训练数据点之后至少延伸到output_chunk_length 的末尾(12 小时)。在您的例子中,最后一个训练数据点是在 2022-10-01 04:00:00,因此该模型预计未来的协变量在 2022-10-01 16:00:00 之前可用。

解决此问题的一种方法是调整 input_chunk_length 和 output_chunk_length 参数以匹配数据的时间范围。

例如,如果您的数据每小时收集一次,并且您想预测接下来的 12 小时,您可以设置:

input_chunk_length = 12 * 24  # 12 days of historical data
output_chunk_length = 12  # 12 hours of forecasting horizon

但是,如果您没有足够的未来协变量来覆盖所需的时间范围,您可能需要重新考虑您的数据收集策略或调整预测范围。

请记住,此错误与模型期望进行预测的上下文窗口有关。该模型需要足够的历史和未来上下文来进行预测,并且错误消息指出未满足上下文窗口。

© www.soinside.com 2019 - 2024. All rights reserved.