Есть ли способ получить журнал описательной статистики набора данных, используя MLflow?
Есть ли способ получить журнал описательной статистики набора данных, используя MLflow? Если есть, не могли бы вы поделиться подробностями?
3 ответа
Вообще говоря, вы можете записывать произвольный вывод из вашего кода, используя функцию mlflow_log_artifact(). Из документов:
mlflow.log_artifact (local_path, artifact_path = None) Записать локальный файл или каталог в качестве артефакта текущего активного прогона.
Параметры:
local_path - путь к файлу для записи. artifact_path - если указан, каталог в artifact_uri для записи.
Например, скажем, у вас есть статистика в кадре данных панд, stat_df
,
## Write csv from stats dataframe
stat_df.to_csv('dataset_statistics.csv')
## Log CSV to MLflow
mlflow_log_artifact('dataset_statistics.csv')
Это будет отображаться в разделе артефактов этого MLflow, запускаемого в интерфейсе отслеживания. Если вы изучите документы дальше, вы увидите, что вы можете также регистрировать весь каталог и объекты в нем. В целом, MLflow предоставляет вам большую гибкость - все, что вы пишете в свою файловую систему, вы можете отслеживать с помощью MLflow. Конечно, это не значит, что вы должны.:)
Существует также возможность зарегистрировать артефакт в виде html-файла, чтобы он отображался в виде (уродливой) таблицы в mlflow.
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()
Как указывалось в ответах, MLFlow позволяет загружать любые локальные файлы. Но хорошей практикой является создание дампа и загрузка из временных файлов.
Преимущество перед принятым ответом: нет остатков и проблем с распараллеливанием.
with tempfile.TemporaryDirectory() as tmpdir:
fname = tmpdir+'/'+'bits_corr_matrix.csv'
np.savetxt(fname,corr_matrix,delimiter=',')
mlflow.log_artifact(fname)