AutoGluon需规范数据格式、明确标签类型及充足硬件资源才能正常运行;安装须对齐CUDA与PyTorch版本;fit()需合理设置time_limit、presets和num_gpus;预处理须处理缺失值、类别类型并删除无关列;预测前须确认模型训练完成且数据结构一致。

AutoGluon 能在多数结构化数据任务中自动完成特征工程、模型选择、超参调优和集成,但前提是数据格式规范、标签类型明确、硬件资源足够——否则会静默失败或卡在 fit() 阶段。
安装与环境准备:别跳过 CUDA 和 PyTorch 版本对齐
AutoGluon 依赖 PyTorch,而 PyTorch 的 CUDA 支持必须和系统驱动匹配。直接 pip install autogluon 很可能装上 CPU-only 版本,导致训练极慢甚至报 RuntimeError: Found no NVIDIA driver on your system。
- 先查显卡驱动版本:
nvidia-smi→ 看右上角 CUDA Version(如 12.2) - 再按官方文档选对应 PyTorch 命令(例如 CUDA 12.1):
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 - 最后装 AutoGluon:
pip install autogluon.tabular(只装 tabular 子包即可,避免冗余)
TabularPredictor.fit() 的关键参数控制实际行为
默认 fit() 会尝试大量模型并做堆叠,耗时长且内存飙升。真实项目里通常要主动约束。
-
time_limit是硬截止时间(秒),不是“尽量用完”,超时后立即停止并返回当前最佳模型 -
presets="best_quality"会启用更多模型和更细搜索,但至少需 30 分钟;日常调试建议用"medium_quality_faster_inference" -
num_gpus=1必须显式指定,否则即使有 GPU 也只用 CPU;多卡需传列表如[0, 1] - 如果验证集效果远差于训练集,加
hyperparameters={"GBM": {"ag_args_fit": {"num_gpus": 1}}}确保树模型也上 GPU
数据预处理不是可选项:AutoGluon 对缺失和类别值很敏感
它不接受 NaN 作为字符串列的值(比如某列是 ["A", "B", NaN]),也不接受未声明的类别型字段——会直接抛 ValueError: Unknown category。
安全 Python 代码沙箱:在隔离的沙箱中执行任意 Python 代码,预装 requests、NumPy、pandas 库。返回 stdout、stderr。
立即学习“Python免费学习笔记(深入)”;
- 数值列缺失值:用
df[col].fillna(df[col].median())或0,别留NaN - 字符串列缺失值:统一替换成特殊标记如
"MISSING",并在fit()前用df[col] = df[col].astype("category") - 目标变量如果是分类任务,确保是
str或int类型,不能是object混合类型(如同时含1和"1") - 时间列、ID 列等无关字段,务必提前
drop(),否则 AutoGluon 可能误判为类别特征
预测阶段常见报错及绕过方式
调用 predict() 时报 KeyError: 'label' 或 AttributeError: 'NoneType' object has no attribute 'predict',基本都是模型没成功训练完就用了。
- 检查
fit()返回对象是否为TabularPredictor实例(打印type(predictor)) - 查看
fit()输出末尾是否有AutoGluon training complete,没有则说明中断了 - 预测数据列名、顺序、数据类型必须和训练时完全一致;建议用
predictor.feature_metadata对比字段类型 - 若只需快速 baseline,用
predictor.leaderboard(silent=True)看各模型分数,挑score_test最高那个单独调用predict()
最常被忽略的是训练数据中混入测试数据的 ID 或时间戳字段——AutoGluon 会把它们当特征学,导致线上预测时因字段缺失直接崩。删干净再跑。

















