You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过MLflow Tracking API跟踪重复K折交叉验证生成的多指标?

如何用MLflow Tracking记录重复K折交叉验证的ROC-AUC指标

针对你用RepeatedKFold(n_splits=5, n_repeats=10)得到的50个ROC-AUC分数,这里提供几种MLflow的记录方案,以及关于是否存储为artifact的判断依据:

1. 优先记录汇总统计指标

大多数实验场景下,核心关注的是模型的整体性能和稳定性,所以先记录分数的均值、标准差等汇总值,这些指标在MLflow UI中直观易读,方便对比不同实验:

import mlflow
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import RepeatedKFold, cross_val_score
from sklearn.datasets import make_classification

# 准备示例数据与模型
X, y = make_classification(n_samples=1000, n_classes=2, random_state=42)
model = LogisticRegression()
rkf = RepeatedKFold(n_splits=5, n_repeats=10, random_state=42)
scores = cross_val_score(model, X, y, cv=rkf, scoring='roc_auc')

# 启动MLflow运行并记录汇总指标
with mlflow.start_run():
    mlflow.log_metric("roc_auc_mean", scores.mean())
    mlflow.log_metric("roc_auc_std", scores.std())
    mlflow.log_metric("roc_auc_min", scores.min())
    mlflow.log_metric("roc_auc_max", scores.max())

2. 记录所有50个个体分数(按需选择)

如果需要追踪每一次折叠的具体表现,有两种实现方式:

方式一:逐个记录为独立指标

给每个分数添加唯一标识符(比如折叠序号),作为单独的metric记录:

with mlflow.start_run():
    for fold_idx, score in enumerate(scores, 1):
        mlflow.log_metric(f"roc_auc_fold_{fold_idx}", score)

这种方式的优势是每个分数都能在MLflow的指标面板中单独查看,但如果分数数量过多,UI会显得拥挤。

方式二:保存为Artifact

如果需要保留原始数据用于后续分析(比如排查异常折叠、绘制分数分布直方图),可以将所有分数存入文件(CSV/JSON),再上传为MLflow artifact:

import pandas as pd

with mlflow.start_run():
    # 将分数存入DataFrame并保存为CSV
    scores_df = pd.DataFrame({"roc_auc_score": scores})
    scores_df.to_csv("cross_val_roc_auc_scores.csv", index=False)
    # 上传文件作为artifact
    mlflow.log_artifact("cross_val_roc_auc_scores.csv")

是否需要存储为Artifact?

  • 若仅需快速评估模型整体性能,不需要存artifact,记录汇总指标完全足够。
  • 若需要保留原始折叠数据用于后续深度分析、复现验证,或者要和其他模型的所有折叠结果做对比,建议存储为artifact。

内容的提问来源于stack exchange,提问作者Nikola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 20:06:22