如何使用 MLflow 记录数据
2025-01-19 17:04:43
记录数据集是任何机器学习项目中的关键步骤,因为它可以确保实验的透明度、可重复性和可追溯性。在本文中,我们将探讨如何使用 MLflow 的“mlflow.data”模块来记录训练和评估数据集。我们将涵盖两个主要方面:1. **使用 `mlflow.log_input()` API 记录训练数据集**2. **使用“mlflow.evaluate()”评估模型时记录评估数据集**让我们深入了解细节。### 1. 使用 `mlflow.log_input()` 记录训练数据集要记录训练数据集,您可以使用“mlflow.data”模块创建数据集对象,然后使用“mlflow.log_input”记录它。这是一个例子:````蟒蛇导入流量# 将数据定义为 pandas DataFrametrain_data = pd.DataFrame({'feature_1': [0.1, 0.2, 0.3],“标签”:[1,0,1]})# 使用mlflow.data创建数据集对象数据集 = mlflow.data.from_pandas(train_data)# 使用 MLflow 记录数据集使用 mlflow.start_run() 运行:mlflow.log_input(数据集,上下文=“训练”)````这会记录训练数据及其元数据。记录的数据集将显示在相应实验下的 MLflow UI 中。### 2. 使用“mlflow.evaluate()”评估模型时记录评估数据集要记录评估数据集并在模型评估期间自动获取性能指标,您可以使用“mlflow.evaluate”。这是一个例子:````蟒蛇导入流量从 sklearn.datasets 导入 load_breast_cancer从 sklearn.model_selection 导入 train_test_split从 sklearn.ensemble 导入 RandomForestClassifier# 加载乳腺癌数据集数据 = load_breast_cancer()X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)# 训练模型(随机森林分类器)模型 = RandomForestClassifier(random_state=42)model.fit(X_train, y_train)# 创建评估数据集eval_data = pd.DataFrame(X_test, columns=data.feature_names)eval_labels = pd.Series(y_test)# 使用 mlflow.data.from_pandas 记录评估数据集使用 mlflow.start_run() 运行:eval_dataset = mlflow.data.from_pandas(eval_data)mlflow.log_input(eval_dataset,上下文=“评估”)# 评估模型和日志指标结果 = mlflow.evaluate(型号=型号,数据=评估数据集,目标=评估标签,评估者=[“默认”])````在这个例子中:- 我们加载乳腺癌数据集并将其分为训练集和评估集。- 我们训练一个“RandomForestClassifier”。- 我们使用“mlflow.data.from_pandas”为评估数据创建一个 MLflow PandasDataset。- 我们使用“mlflow.log_input”记录评估数据集,然后评估模型。### 默认评估器记录的重要指标当您在“mlflow.evaluate”中使用“default”评估器时,会自动记录几个重要指标:- **example_count**:用于评估的示例数量。- **均值绝对误差**、**均方误差**、**均方根误差**- **目标总和**,**目标平均值**- **r2_分数**- **最大错误**- **平均绝对百分比误差**这些指标提供了模型性能的全面概述。### 输出示例当您运行评估时,MLflow 会记录以下指标:````蟒蛇指标={“示例计数”:5160,'mean_absolute_error': np.float64(0.32909333102713195),'mean_squared_error': np.float64(0.2545599452819612),'root_mean_squared_error': np.float64(0.5045393396772557),'sum_on_target': np.float64(10646.03931999994),'mean_on_target': np.float64(2.0631859147286704),'r2_score':0.8076205696273513,'最大错误': np.float64(3.626845299999994),'mean_absolute_percentage_error': np.float64(0.1909308987066793)}````### 记录数据集的好处- **可重复性**:您可以轻松地重复您的实验。- **问责制**:跟踪用于培训和评估的数据。- **审计跟踪**:跟踪数据集随时间的变化。通过记录训练和评估数据集,您可以确保您的 ML 项目透明、可重现且记录齐全。这对于维持机器学习工作流程的高质量和可靠性标准至关重要。### 结论使用 MLflow 的“mlflow.data”模块来记录数据集,为跟踪数据沿袭和全面评估模型提供了一个强大的框架。通过利用“mlflow.log_input()”和“mlflow.evaluate()”,您可以确保您的实验有详细记录、可重复且可靠。当您继续处理您的项目时,请随意探索 MLflow 的更多高级功能!如果您有任何疑问或需要进一步帮助,请访问社区论坛或文档。快乐编码!🚀````蟒蛇# 示例:使用 `mlflow.log_input()` 通过 MLflow 记录数据集导入流量从 sklearn.datasets 导入 load_boston从 sklearn.model_selection 导入 train_test_split从 sklearn. Linear_model 导入 LinearRegression将 pandas 导入为 pd# 加载波士顿住房数据集并将其分为训练集和评估集波士顿数据 = load_boston()X_train, X_val, y_train, y_val = train_test_split(boston_data.data, boston_data.target, test_size=0.2)# 训练线性回归模型模型=线性回归()model.fit(X_train, y_train)# 将评估数据转换为pandas DataFrameeval_data = pd.DataFrame(X_val, columns=boston_data.feature_names)eval_labels = pd.Series(y_val)# 记录训练数据集使用 mlflow.start_run() 运行:train_dataset = mlflow.data.from_pandas(pd.DataFrame(X_train, columns=boston_data.feature_names))mlflow.log_input(train_dataset, context="training")# 评估模型和日志指标eval_result = mlflow.evaluate(型号=型号,数据=评估数据,目标=评估标签,评估者=[“默认”])# 显示记录的指标打印(评估结果.指标)````此示例演示如何训练线性回归模型、将数据集拆分为训练集和评估集、使用 MLflow 记录两个数据集以及评估模型的性能。然后显示评估的指标。有关更高级的用例和其他功能,请参阅 [MLflow 文档](https://mlflow.org/docs/latest/index.html)。愉快地尝试 MLflow!🚀🚀🚀