有没有办法使用 MLflow 记录数据集的描述性统计信息?

Is there a way to get log the descriptive stats of a dataset using MLflow?

有没有办法使用 MLflow 记录数据集的描述性统计信息?如果有的话,你能分享一下细节吗?

一般来说,您可以使用 mlflow_log_artifact() 函数记录代码的任意输出。来自 the docs:

mlflow.log_artifact(local_path, artifact_path=None) Log a local file or directory as an artifact of the currently active run.

Parameters:
local_path – Path to the file to write. artifact_path – If provided, the directory in artifact_uri to write to.

举个例子,假设您的统计数据在 pandas 数据框中,stat_df

## Write csv from stats dataframe
stat_df.to_csv('dataset_statistics.csv')

## Log CSV to MLflow
mlflow.log_artifact('dataset_statistics.csv')

这将显示在跟踪 UI 中此 MLflow 运行 的工件部分下。如果您进一步浏览文档,您会发现您还可以记录整个目录和其中的对象。通常,MLflow 为您提供了很大的灵活性——您写入文件系统的任何内容都可以使用 MLflow 进行跟踪。当然,这并不意味着你应该。 :)

也可以将工件记录为 html 文件,以便在 mlflow 中显示为(丑陋的)table。

import seaborn as sns
import mlflow

mlflow.start_run()
df_iris = sns.load_dataset("iris")
df_iris.describe().to_html("iris.html")
mlflow.log_artifact("iris.html",
                    "stat_descriptive")
mlflow.end_run()