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并尝试了许多不同的数字,但什么也没发生,而且我也得到了同样的错误。
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
但是,如果您没有足够的未来协变量来覆盖所需的时间范围,您可能需要重新考虑您的数据收集策略或调整预测范围。
请记住,此错误与模型期望进行预测的上下文窗口有关。该模型需要足够的历史和未来上下文来进行预测,并且错误消息指出未满足上下文窗口。