如何基于传入的test_data从AutoMLRun中获取评估指标
基于传入的test_data获取AutoMLRun评估指标的方法
你在AutoMLConfig中已经指定了test_data参数,运行完成后可通过以下两种方式直接获取测试集的评估结果:
方法1:直接从AutoMLRun对象拉取自动计算的测试集指标
AutoML运行结束后会自动基于你传入的test_data完成推理和指标计算,直接调用get_test_run_details()方法即可获取全部指标:
# 确保运行已完成,可先调用等待方法 automl_run.wait_for_completion(show_output=False) # 提取测试集全量评估指标 test_run_details = automl_run.get_test_run_details() test_metrics = test_run_details["metrics"] # 查看所有指标 print(test_metrics) # 单独提取你配置的主指标spearman_correlation print(f"测试集斯皮尔曼相关系数:{test_metrics['spearman_correlation']}")
方法2:提取最佳模型后自行计算(适合需要自定义验证逻辑的场景)
你也可以先取出训练得到的最佳模型,自行加载test_data推理后计算评估指标:
# 获取最佳模型和对应的运行 best_run, fitted_model = automl_run.get_output() # 拆分测试集的特征和标签 X_test = test_data.drop_columns(columns=[label_column_name]) y_test = test_data.keep_columns(columns=[label_column_name]).to_pandas_dataframe() # 模型推理 y_pred = fitted_model.predict(X_test) # 自定义计算指标,以spearman相关系数为例 from scipy.stats import spearmanr spearman_corr, _ = spearmanr(y_test, y_pred) print(f"自行计算的测试集斯皮尔曼相关系数:{spearman_corr}")
注意事项
- 必须等AutoML任务完全运行结束后再调用上述接口,运行中调用会返回空值
- 传入的test_data必须包含和训练数据一致的标签列,否则AutoML无法自动计算评估指标
内容的提问来源于stack exchange,提问作者Anders Swanson
相关产品推荐
相关产品推荐

