如何在Databricks AutoML中基于日期划分训练/验证/测试集?
Databricks AutoML时间序列数据集划分与特征排除问题解决方法
一、解决当前Databricks AutoML的问题
- 预处理分离划分列与特征列:Databricks AutoML中
time_col默认会被作为特征参与训练,exclude_cols对其优先级较低。解决办法是先复制时间列(例如将原时间列ts复制为partition_ts),用partition_ts作为time_col参数值,再将原时间列ts加入exclude_cols,这样既保证按时间顺序划分数据集,又避免原时间列被用于模型训练。 - 确认参数配置正确性:使用Python API启动实验时,确保参数传递无误,示例代码如下:
import databricks.automl as automl # 假设df是你的数据集,已新增partition_ts列 automl_summary = automl.regress( dataset=df, target_col="your_target_column", time_col="partition_ts", exclude_cols=["ts"], # 排除原时间列 primary_metric="r2" )
- 验证实验结果:在AutoML生成的实验报告中,查看「Data Exploration」模块的特征列表确认原时间列已被排除,同时检查「Train/Validation/Test Split」模块的划分逻辑是否符合最早数据训练、次新数据验证、最新数据测试的规则。
二、适配Databricks的其他AutoML工具推荐
- MLflow AutoML:Databricks原生集成工具,支持完全自定义数据集划分。你可以先手动按时间切分训练/验证/测试集,再传入MLflow AutoML进行训练与超参数调优,精准控制特征使用。示例代码:
import mlflow # 手动按时间划分数据集 train_df = df.filter(df.ts < "2023-01-01") val_df = df.filter((df.ts >= "2023-01-01") & (df.ts < "2023-06-01")) test_df = df.filter(df.ts >= "2023-06-01") with mlflow.start_run(): automl_run = mlflow.automl.run( data=train_df, target_col="your_target_column", validation_data=val_df, test_data=test_df, exclude_cols=["ts"] )
- H2O.ai on Databricks:支持时间序列专用划分策略,可灵活排除特征,通过Databricks集成直接在集群运行,自带超参数调优与模型解释功能,适合复杂时间序列场景。
- AutoGluon on Databricks:在时间序列任务中适配性强,支持自定义划分逻辑,自动处理时间特征的同时允许手动排除无关列,可通过Databricks笔记本快速安装运行,适配不同数据规模。
内容的提问来源于stack exchange,提问作者Michael Skarn
相关产品推荐
相关产品推荐

