如何用MLflow做机器学习实验效果比对
背景介绍
最近看了很多MLflow相关的内容,做一个简单的分享。MLFlow是一款管理机器学习工作流程的工具,核心由以下4个模块组成:
MLflow Tracking:如何通过API的形式管理实验的参数、代码、结果,并且通过UI的形式做对比。
MLflow Projects:代码打包的一套方案
MLflow Models:一套模型部署的方案
MLflow Model Registry:一套管理模型和注册模型的方案
今天重点讲讲MLflow Tracking,也就是如何做机器学习不同模型下的实验的管理以及效果的比对。
详细流程
(1)安装环境
肯定要首先安装mlflow,可以通过pip install mlflow的方式进行安装。
(2)训练代码
可以使用mlflow的官方demo做模型的训练,具体代码如下:
重点看下最后几行:
mlflow.log_param("alpha", alpha)
mlflow.log_param("l1_ratio", l1_ratio)
mlflow.log_metric("rmse", rmse)
mlflow.log_metric("r2", r2)
mlflow.log_metric("mae", mae)
在这几行代码中,demo通过mlflow sdk注册了参与训练的参数,分别是alpha和l1_ratio,另外也注册了metric(参与评估的指标)为rmse、r2、mae
(3)执行训练任务
import os
import warnings
import sys
import pandas as pd
import numpy as np
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
from sklearn.model_selection import train_test_split
from sklearn.linear_model import ElasticNet
import mlflow
import mlflow.sklearn
import logging
logging.basicConfig(level=logging.WARN)
logger = logging.getLogger(__name__)
def eval_metrics(actual, pred):
rmse = np.sqrt(mean_squared_error(actual, pred))
mae = mean_absolute_error(actual, pred)
r2 = r2_score(actual, pred)
return rmse, mae, r2
if __name__ == "__main__":
warnings.filterwarnings("ignore")
np.random.seed(40)
# Read the wine-quality csv file from the URL
csv_url =\
'http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv'
try:
data = pd.read_csv(csv_url, sep=';')
except Exception as e:
logger.exception(
"Unable to download training & test CSV, check your internet connection. Error: %s", e)
# Split the data into training and test sets. (0.75, 0.25) split.
train, test = train_test_split(data)
# The predicted column is "quality" which is a scalar from [3, 9]
train_x = train.drop(["quality"], axis=1)
test_x = test.drop(["quality"], axis=1)
train_y = train[["quality"]]
test_y = test[["quality"]]
alpha = float(sys.argv[1]) if len(sys.argv) > 1 else 0.5
l1_ratio = float(sys.argv[2]) if len(sys.argv) > 2 else 0.5
with mlflow.start_run():
lr = ElasticNet(alpha=alpha, l1_ratio=l1_ratio, random_state=42)
lr.fit(train_x, train_y)
predicted_qualities = lr.predict(test_x)
(rmse, mae, r2) = eval_metrics(test_y, predicted_qualities)
print("Elasticnet model (alpha=%f, l1_ratio=%f):" % (alpha, l1_ratio))
print(" RMSE: %s" % rmse)
print(" MAE: %s" % mae)
print(" R2: %s" % r2)
mlflow.log_param("alpha", alpha)
mlflow.log_param("l1_ratio", l1_ratio)
mlflow.log_metric("rmse", rmse)
mlflow.log_metric("r2", r2)
mlflow.log_metric("mae", mae)
mlflow.sklearn.log_model(lr, "model")
接下来就可以执行训练任务,每次执行需要传两个参数,分别对应代码里的alpha和l1_ratio这两个取值。
python train.py 0.4 0.4
python train.py 0.5 0.5
python train.py 0.6 0.6
训练完后数据会在本地做一个存储,以每次任务的实例名称为文件夹名
每个任务下面有四个内容,分别是params、metrics、artifacts、tags
Artifacts:存储输出的model
Metrics:存储了模型的评估指标,比如mae、r2、rmse
Params:存储的是一些参数
Tags:存储的是一些任务的meta,就是用户、日志等等
(4)可视化管理
在terminal中运行命令:mlflow run
然后在浏览器输入localhost:5000,可以打开mlflow的UI
experiments是实验对照组,在选择对照组后可以选择不同的任务进行比较。
可以看到不同任务的效果比对:
也可以图形化的展示:
如何用MLflow做机器学习实验效果比对相关推荐
- 如何用计算机做科学实验,8.用计算机做科学实验 (3)
8.用计算机做科学实验 (3) (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 7.9 积分 我的教学主张 陶加律一.现状分析与背景关于文件夹的相关教 ...
- 如何用Jquery做图片展示效果
一. 前言 到底用JQuery做出怎样的展示效果? 让我们先来看一下!网页加载时,如图所示: 二.本人思路 这个效果初学者看起来好像有点复杂,其实不太难,关键是理清思路,从后端的数据库中找出我们要展示 ...
- 如何用ps做故障艺术风格效果
今天这个教程主要是用PS动作来做的,能给我们在工作上面带来很大的方便,特别是突然做故障艺术风格海报的人来说,这个还是非常有用滴,至于动作怎么找,可以搜"赛博故障风格海报艺术效果PS动作&qu ...
- 还在用Tensorboard?机器学习实验管理平台大盘点
文 | SisyphusBJ 源 | Pytorch Lightning wandb.ai comet.ml neptune.ai allegro trains mlflow guild.ai sac ...
- Android自定义view心电图,如何用PS做心电图,PS做心电图操作过程详解
photoshop是一个功能强大的图像软件,那么如何用photoshop做一个心电图效果的动态图片呢?这些图片可以做一个个性的贴吧签名档,现在就为大家介绍一下. 1.打开photoshop,根据想要的 ...
- 如何做机器学习模型质量保障及模型效果评测
桔妹导读:近年来,机器学习模型算法在越来越多的工业实践中落地.在滴滴,大量线上策略由常规算法迁移到机器学习模型算法.如何搭建机器学习模型算法的质量保障体系成为质量团队急需解决的问题之一.本文整体介绍了 ...
- android 画笔压痕效果,【自制样机教程】如何用Ps做一个压痕效果的Logo样机
原标题:[自制样机教程]如何用Ps做一个压痕效果的Logo样机 上次教你们做的自制小糖袋的 贴图样机 不知道你们玩耍的咋样 今天再给你们介绍一个logo的样机 这次的教程主要用到了图层样式 来看看怎么 ...
- 如何用因果推断和实验驱动用户增长? | 7月28日TF67
因果推断是数据科学领域一个重要的分支.通过系统实验发现.探索和推断事物间的因果关系,一直是人类认识世界的基本方式和现代科学的基石,也是数据科学中的一个核心问题.本期活动汇集了跨行业的互联网资深数据科学 ...
- 如何用XGBoost做时间序列预测?
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 来源:Jason Brownlee,整理:数据派THU 本文约3300字 ...
最新文章
- 一文看尽CVPR 2019十大新研究:“不看也知”成热点,无人车新增重磅开源数据集...
- 企业项目开发--切分配置文件
- factorymenu什么意思_MENU是什么意思
- python安装方法3.8.2_Linux安装Python3.8.1的教程详解
- Java基础(三十二)JDBC(2)连接数据库
- HDU1069 最长上升子序列
- mysql 迁移 nosql_从关系型Mysql到Nosql HBase的迁移实践
- 计算机系统与环境,COMPUTERS ENVIRONMENT AND URBAN SYSTEMS《计算机、环境与城市系统》SSCI论文投稿_万维书刊网...
- python如何打开txt文件、并算词频_Python 合并多个TXT文件并统计词频的实现
- Android-AlarmManager(全局定时器/闹钟)
- shell脚本一键安装jdk
- 77GHz毫米波雷达快速chirp信号技术(一):测距原理
- 计算机软件登记委托开发合同,软件委托开发合同
- 又是一次数据分析的例子(自杀分析)
- Googler高级工程师打造“厂外生存指南”,程序员感叹,圆我大厂梦
- 【论文】联邦学习区块链 论文集(二)
- ctf MISC 放松一下吧
- vue项目你一定会用到的性能优化!
- vue3.x +Cesium Cesium 鼠标交互,鼠标点击拾取对象等(五)
- 目前最火的人工神经网络,神经网络未来发展趋势
热门文章
- Leetcode1713. 得到子序列的最少操作次数[C++题解]:LCS转化成LIS,转化为nlogn做法
- python爬取qq音乐周杰伦_Python爬取20万条评论,告诉你周杰伦为啥弄崩QQ音乐?
- telnet工具_Telnet进入Linux时出现乱码
- java search 不能使用方法_elasticsearch(七)java 搜索功能Search Request的介绍与使用...
- mysql免安装版鞋子_MySQL创建用户及授权
- comlx 牌计算机音乐怎么设置,最具性价比的全能型 MIDI 键盘:Nektar Impact LX+ 键盘视频教程...
- vue暴露的全局方法_Vue中实现全局方法
- python pip 安装与使用_Python pip 安装与使用(安装、更新、删除)
- hadoop中的jps是什么,Jps命令—使用详解【笔记自用】
- 多线程之pthread_create()函数