AutoGluon打一打时序比赛
AutoGluon对时序的支持似乎不太好,目前来看使用AutoGluon参与的时序比赛效果都很一般,学习为主吧
一、环境准备
1. 安装AutoGluon
%%time
!pip install autogluon.timeseries > /dev/null 2>&12. 导入依赖库
from autogluon.timeseries import TimeSeriesDataFrame, TimeSeriesPredictor
二、数据加载与预处理
1. 读取训练数据
df_train = pd.read_csv('/kaggle/input/open-data-day-2025-dates-types-classification/train_labels.csv')2. 转换数据
# 把普通的 pandas.DataFrame 转换为 TimeSeriesDataFrame,这是 AutoGluon 时序预测模型所需的数据结构
data = TimeSeriesDataFrame.from_data_frame(
df_train,
id_column="ID",
timestamp_column="timestamp",
)3. 拆分训练集和测试集
train_data, test_data = data.train_test_split(total_day)4. 拆分训练集和测试集
train_data, test_data = data.train_test_split(total_day)三、AutoGluon模型
3.1、构建一个 AutoGluon 的时序预测模型
# 快速构建已知协变量(辅助特征)
known_covariates = [col for col in train_data.columns if col != 'future_7d_login_days']
predictor = TimeSeriesPredictor(
prediction_length=total_day, # 预测步长
path="autogluon", # 模型输出路径
target="future_7d_login_days", # 预测目标列
eval_metric="SMAPE", # 评估指标
freq="D", # 时间频率
known_covariates_names=known_covariates, # 已知协变量(辅助特征)
)3.2、AutoGluon训练
predictor.fit(
train_data, # 训练数据
num_val_windows=5, # 5 个滑动验证窗口
hyperparameters={ # Chronos 系列模型参数
"Chronos": [
# Zero-shot model WITHOUT covariates
{
"model_path": "bolt_small",
"ag_args": {"name_suffix": "ZeroShot"},
},
# Chronos-Bolt (Small) combined with CatBoost on covariates
{
"model_path": "bolt_small",
"covariate_regressor": "CAT",
"target_scaler": "standard",
"ag_args": {"name_suffix": "WithRegressor"},
},
],
},
enable_ensemble=False, # 单独评估每个模型
verbosity=4, # 日志等级
time_limit=time_limit, # 训练时间上限
)3.3、查看 AutoGluon 训练完成后所有模型的表现对比表
leaderboard = predictor.leaderboard()
leaderboard四、进行预测
4.1、预测
predictions = predictor.predict(predict_data,known_covariates=test_data[known_covariates])
4.2、可视化预测结果
predictor.plot(
data=predict_data,
predictions=predictions,
item_ids=predict_data.item_ids[:2],
max_history_length=200,
)五、参考链接
六、总结
AutoGluon对时序的支持似乎一般,也可能是本人研究未深导致,如果之后有合适的比赛,将会继续尝试
评论
目录