在Python中无法在DataFrame上运行sktime.TBATS算法求助
解决sktime TBATS算法的时间序列格式错误
错误原因
你传入forecaster_tbats.fit()的DataFrame使用默认整数索引,sktime无法识别这是合法的时间序列格式——它要求输入数据必须带有兼容的时间类型索引,以此识别时间序列的时间维度。
修正步骤
- 将
Date列转换为datetime类型,确保sktime能识别时间信息 - 将
Date列设置为DataFrame的索引 - 传入单变量Series或带时间索引的DataFrame给TBATS的
fit方法
修正后的代码
import pandas as pd from sktime.forecasting.tbats import TBATS # 筛选目标产品数据 df_to_process_tbats = engineered_df_to_process[engineered_df_to_process.Pack == product].reset_index(drop=True) # 转换Date列为datetime并设置为索引 df_to_process_tbats['Date'] = pd.to_datetime(df_to_process_tbats['Date']) df_to_process_tbats = df_to_process_tbats.set_index('Date') # 提取Qty列作为时间序列(推荐用Series,更贴合单变量时间序列场景) y = df_to_process_tbats['Qty'] # 初始化并训练模型 forecaster_tbats = TBATS() forecaster_tbats.fit(y)
格式验证工具
如果不确定数据格式是否合规,可使用sktime的诊断工具检查:
from sktime.datatypes import check_raise # 验证单变量时间序列格式 check_raise(y, mtype="pd.Series")
内容的提问来源于stack exchange,提问作者Andrei Tulbure
相关产品推荐
相关产品推荐

