文档
  • PyCaret 3.0
  • 开始使用
    • 💻安装
    • 🚀快速入门
    • ⭐教程
    • 📶模块
    • ⚙️数据预处理
      • 数据准备
      • 缩放和转换
      • 特征工程
      • 特征选择
      • 其他设置参数
    • 💡函数
      • 初始化
      • 训练
      • 优化
      • 分析
      • 部署
      • 其他
  • 学习 PYCARET
    • 📖博客
      • 发布 PyCaret 1.0
      • 发布 PyCaret 2.0
      • 关于 PyCaret 你不知道的 5 件事
      • 构建和部署你的第一个机器学习 Web 应用
      • 使用 PyCaret 在 Power BI 中构建自己的 AutoML
      • 在 Google Kubernetes 上部署机器学习管道
      • 在 AWS Fargate 上部署 PyCaret 和 Streamlit
      • 使用 PyCaret 在 Power BI 中进行异常检测
      • 在 Google Kubernetes 上部署机器学习应用
      • 在 GKE 上部署机器学习管道
      • 在 AWS Fargate 上部署机器学习管道
      • 使用 Docker 在云端部署机器学习管道
      • 使用 PyCaret 在 Power BI 中进行聚类分析
      • 使用 ONNX Runtime 在边缘部署 PyCaret 模型
      • GitHub 是你将需要的最佳 AutoML
      • 在 AWS Fargate 上部署 PyCaret 和 Streamlit
      • 使用 PyCaret 和 MLflow 轻松实现 MLOps
      • 使用 PyCaret 在 Power BI 中进行聚类分析
      • 使用 PyCaret 在 Alteryx 中进行机器学习
      • 使用 PyCaret 在 KNIME 中进行机器学习
      • 使用 PyCaret 在 SQL 中进行机器学习 第一部分
      • 使用 PyCaret 在 Power BI 中进行机器学习
      • 使用 PyCaret 在 Tableau 中进行机器学习
      • 使用 PyCaret 进行多时间序列预测
      • 使用 PyCaret 预测客户流失
      • 使用 PyCaret 预测潜在客户评分(正确方法)
      • 使用 PyCaret 在 Python 中进行 NLP 文本分类
      • 使用 PyCaret 预测潜在客户评分(正确方法)
      • 使用 PyCaret 预测黄金价格暴跌
      • 使用机器学习预测黄金价格
      • PyCaret 2.1 功能摘要
      • 使用 PyCaret 将机器学习模型部署到 SQL Server
      • 使用 PyCaret 和 Gradio 为你的机器学习注入活力
      • 时间序列 101 - 献给初学者
      • 使用 PyCaret 进行时间序列异常检测
      • 使用 PyCaret 回归进行时间序列预测
      • 使用 PyCaret 在 Power BI 中进行主题建模
      • 使用 PyCaret 编写和训练自定义机器学习模型
      • 使用 PyCaret 和 Streamlit 构建和部署机器学习应用
      • PyCaret 2.3.6 来了!了解新功能?
    • 📺视频
    • 🛩️备忘单
    • ❓常见问题
    • 👩‍💻示例
  • 重要链接
    • 🛠️发行说明
    • ⚙️API 参考
    • 🙋 讨论
    • 📤问题
    • 👮 许可证
  • 媒体
    • 💻Slack
    • 📺YouTube
    • 🔗LinkedIn
    • 😾GitHub
    • 🔅Stack Overflow
由 GitBook 提供支持
在本页面
  • 使用 PyCaret + MLflow 轻松实现 MLOps
  • PyCaret
  • MLflow
  • 安装 PyCaret
  • 👉 开始吧
  • 👉 什么是 MLOps?
  • 👉 业务问题
  • 👉 数据
  • 👉 探索性数据分析
  • 👉 数据准备
  • 👉 模型训练与选择
  • 👉 部署
  • 即将推出!
  • 你可能也感兴趣
  • 重要链接
  • 想了解特定模块?

这有用吗?

  1. 学习 PYCARET
  2. 博客

使用 PyCaret 和 MLflow 轻松实现 MLOps

上一篇在 AWS Fargate 上部署 PyCaret 和 Streamlit下一篇使用 PyCaret 在 Power BI 中进行聚类分析

最后更新于 2 年前

这有用吗?

使用 PyCaret + MLflow 轻松实现 MLOps

一份对初学者友好的分步教程,介绍如何使用 PyCaret 将 MLOps 集成到你的机器学习实验中

图片由 Adi Goldstein 在 Unsplash 上提供

PyCaret

PyCaret 是一个开源的低代码机器学习库,也是一个内置于 Python 中的端到端模型管理工具,用于自动化机器学习工作流程。它以易用性、简洁性以及快速高效地构建和部署端到端机器学习原型而闻名。

PyCaret 是一个替代性的低代码库,只需几行代码就可以取代数百行代码。这使得实验周期呈指数级加快且更高效。

MLflow

MLflow 是一个开源平台,用于管理机器学习生命周期,包括实验、可复现性、部署和集中式模型注册中心。MLflow 目前提供四个组件

安装 PyCaret

安装 PyCaret 非常简单,只需几分钟。我们强烈建议使用虚拟环境,以避免与其他库发生潜在冲突。

**# install slim version (default)
**pip install pycaret

**# install the full version**
pip install pycaret[full]

👉 开始吧

在我谈论 MLOps 之前,让我们先从宏观层面谈谈机器学习生命周期

  • 业务问题 — 这是机器学习工作流程的第一步。完成这一步可能需要几天到几周的时间,具体取决于用例和问题的复杂性。在此阶段,数据科学家与主题专家 (SME) 会面,以理解问题、访谈关键利益相关者、收集信息,并设定项目的总体预期。

  • 数据源和 ETL — 一旦对问题有了理解,接下来就是利用访谈中获得的信息从企业数据库中获取数据。

  • 探索性数据分析 (EDA) — 建模尚未开始。EDA 是你分析原始数据的地方。你的目标是探索数据,评估数据质量、缺失值、特征分布、相关性等。

  • 数据准备 — 现在是准备数据模型训练的时候了。这包括将数据划分为训练集和测试集、填充缺失值、one-hot 编码、目标编码、特征工程、特征选择等。

  • 模型训练与选择 — 这是每个人都感到兴奋的一步。这包括训练大量模型、调优超参数、模型集成、评估性能指标(如 AUC、混淆矩阵、残差等),最后选择一个最佳模型部署到生产环境供业务使用。

  • 部署与监控 — 这是最后一步,主要涉及 MLOps。这包括将最终模型打包、创建 Docker 镜像、编写评分脚本,然后将它们协同工作,最后将其发布为可用于对通过管道的新数据获取预测的 API。

完成所有这些的传统方式相当繁琐、耗时,需要大量的技术知识,我可能无法在一个教程中涵盖。然而,在本教程中,我将使用 PyCaret 来演示数据科学家如何非常高效地完成所有这些工作变得如此容易。在我们进入实践部分之前,让我们再多谈谈 MLOps。

👉 什么是 MLOps?

MLOps 是一门工程学科,旨在结合机器学习开发,即实验(模型训练、超参数调优、模型集成、模型选择等),这通常由数据科学家进行,并结合机器学习工程和运维,以标准化和简化机器学习模型在生产环境中的持续交付。

如果你是完全的初学者,你很可能不知道我在说什么。别担心。让我给你一个简单的非技术性定义

*MLOps 是一系列技术工程和操作任务,使得你的机器学习模型能够被组织内的其他用户和应用程序使用。基本上,它是一种方法,通过这种方法,你的工作,即机器学习模型被发布到线上,以便其他人可以使用它们并达成一些业务目标。

这是对 MLOps 的一个非常简化了的定义。实际上,它涉及更多的工作和好处,但如果你刚接触这些,这是一个好的开始。

现在让我们按照上面图表中所示的相同工作流程进行实践演示,请确保你已经安装了 pycaret。

👉 业务问题

👉 数据

**# load the dataset from pycaret
**from pycaret.datasets import get_data
data = get_data('diamond')

👉 探索性数据分析

让我们做一些快速可视化,以评估独立特征(重量、切工、颜色、净度等)与目标变量(即价格)的关系

**# plot scatter carat_weight and Price**
import plotly.express as px
fig = px.scatter(x=data['Carat Weight'], y=data['Price'], 
                 facet_col = data['Cut'], opacity = 0.25, template = 'plotly_dark', trendline='ols',
                 trendline_color_override = 'red', title = 'SARAH GETS A DIAMOND - A CASE STUDY')
fig.show()

让我们检查目标变量的分布。

**# plot histogram**
fig = px.histogram(data, x=["Price"], template = 'plotly_dark', title = 'Histogram of Price')
fig.show()

注意价格分布是右偏的,我们可以快速检查对数变换是否能使价格近似正态分布,从而为假设正态分布的算法提供机会。

import numpy as np

**# create a copy of data**
data_copy = data.copy()

**# create a new feature Log_Price**
data_copy['Log_Price'] = np.log(data['Price'])

**# plot histogram**
fig = px.histogram(data_copy, x=["Log_Price"], title = 'Histgram of Log Price', template = 'plotly_dark')
fig.show()

这证实了我们的假设。该变换将帮助我们摆脱偏态,使目标变量近似正态分布。基于此,我们将在训练模型之前对价格变量进行变换。

👉 数据准备

**# initialize setup**
from pycaret.regression import *
s = setup(data, target = 'Price', transform_target = True, log_experiment = True, experiment_name = 'diamond')

当你在 PyCaret 中初始化 setup 函数时,它会分析数据集并推断所有输入特征的数据类型。如果所有数据类型都正确推断,你可以按 Enter 继续。

注意

👉 模型训练与选择

数据已准备好进行建模,现在让我们使用 compare_models 函数开始训练过程。它将训练模型库中所有可用的算法,并使用 k 折交叉验证评估多个性能指标。

**# compare all models**
best = compare_models()
**# check the residuals of trained model**
plot_model(best, plot = 'residuals_interactive')
**# check feature importance**
plot_model(best, plot = 'feature')

确定并保存管道

现在让我们确定最佳模型,即在包括测试集在内的整个数据集上训练最佳模型,然后将管道保存为 pickle 文件。

**# finalize the model**
final_best = finalize_model(best)

**# save model to disk
**save_model(final_best, 'diamond-pipeline')

save_model 函数会将整个管道(包括模型)保存为本地磁盘上的 pickle 文件。默认情况下,它会保存到你的 Notebook 或脚本所在的同一文件夹中,但你也可以传入完整的路径。

save_model(final_best, 'c:/users/moez/models/diamond-pipeline'

👉 部署

记住我们在 setup 函数中传递了 log_experiment = True 以及 experiment_name = 'diamond' 。让我们看看 PyCaret 在 MLflow 的帮助下在幕后做了什么神奇的事情。要看到这个神奇之处,让我们启动 MLflow 服务器

**# within notebook (notice ! sign infront)
**!mlflow ui

**# on command line in the same folder
**mlflow ui

现在打开你的浏览器并输入“localhost:5000”。它将打开一个如下图所示的 UI

上表中每个条目代表一次训练运行,产生一个训练好的管道以及一系列元数据,例如运行的日期时间、性能指标、模型超参数、标签等。让我们点击其中一个模型

注意你有一个 logged_model 的地址路径。这是使用 Catboost Regressor 训练的管道。你可以使用 load_model 函数读取这个管道。

**# load model**
from pycaret.regression import load_model
pipeline = load_model('C:/Users/moezs/mlruns/1/b8c10d259b294b28a3e233a9d2c209c0/artifacts/model/model')

**# print pipeline
**print(pipeline)

现在让我们使用这个管道对新数据生成预测

**# create a copy of data and drop Price
**data2 = data.copy()
data2.drop('Price', axis=1, inplace=True)

**# generate predictions
**from pycaret.regression import predict_model
predictions = predict_model(pipeline, data=data2)
predictions.head()

太棒了!我们现在从训练好的管道中得到了推断结果。如果这是你的第一个,恭喜你。注意所有转换,如目标变换、one-hot 编码、缺失值填充等,都在幕后自动发生了。你得到一个包含实际比例预测的数据框,这就是你关心的结果。

即将推出!

我今天展示的只是借助 MLflow 将 PyCaret 训练的管道投入生产环境的众多方法之一。在下一个教程中,我计划展示如何使用 MLflow 原生服务功能注册模型、版本化模型并将其作为 API 提供服务。

使用这个轻量级的 Python 工作流自动化库,你可以实现的目标没有限制。如果你觉得这有用,请不要忘记在我们的 GitHub 仓库给我们一个 ⭐️。

你可能也感兴趣

重要链接

想了解特定模块?

点击下方链接查看文档和工作示例。

PyCaret — 一个开源的、低代码的 Python 机器学习库

要了解更多关于 PyCaret 的信息,你可以查看他们的.

MLflow 是一个用于管理机器学习生命周期的开源平台

要了解更多关于 MLflow 的信息,你可以查看.

PyCaret 的默认安装是 pycaret 的精简版本,只安装硬性依赖.

当你安装完整版 pycaret 时,所有可选依赖项,例如也会安装。MLflow 是 PyCaret 的依赖项之一,因此不需要单独安装。

机器学习生命周期 — 作者图片(从左到右阅读)

在本教程中,我将使用达顿商学院发表的非常流行的案例研究,该案例发表于。该案例讲述了两个即将结婚的人的故事。一个名叫 Greg 的男人想买一枚戒指向一个名叫 Sarah 的女孩求婚。问题是找到 Sarah 会喜欢的戒指,但在他密友的建议下,Greg 决定购买一颗钻石原石,以便 Sarah 可以自己决定。Greg 随后收集了 6000 颗钻石的数据,包括它们的价格以及切工、颜色、形状等属性。

在本教程中,我将使用达顿商学院发表的非常流行的案例研究中的数据集,该案例发表于。本教程的目标是根据钻石的属性,如克拉重量、切工、颜色等,预测钻石价格。你可以从此处下载数据集.

数据样本行
Sarah 的钻石案例研究

与 PyCaret 中的所有模块一样,setup 是使用 PyCaret 进行任何机器学习实验的第一步,也是唯一强制的步骤。该函数负责在训练模型之前所需的所有数据准备工作。除了执行一些基本的默认处理任务外,PyCaret 还提供广泛的预处理功能。要了解 PyCaret 中所有预处理功能的更多信息,你可以查看此.

pycaret.regression 模块中的 setup 函数

我传递了 log_experiment = True 和 experiment_name = 'diamond' ,这将告诉 PyCaret 在你进行建模阶段时,在幕后自动记录所有指标、超参数和模型制品。这得益于与.

此外,我在 setup 中使用了 transform_target = True。PyCaret 将在幕后使用 box-cox 变换来变换价格变量。它对数据分布的影响与对数变换类似 (技术上不同)。如果你想了解更多关于 box-cox 变换的信息,可以参考此.

setup 输出 — 为显示而截断
compare_models 输出
最佳模型的残差和 QQ 图
https://localhost:5000
第一部分 — CatBoost 回归器
第二部分 — CatBoost 回归器(续)
第二部分 — CatBoost 回归器(续)
print(pipeline) 输出
从管道生成的预测

要了解更多关于 PyCaret 的信息,请关注我们和.

加入我们的 Slack 频道。邀请链接.

📖
GitHub
GitHub
在此列出
在此列出
Harvard Business
Harvard Business
PyCaret 的仓库
链接
MLflow
链接
LinkedIn
Youtube
此处
使用 PyCaret 2.0 在 Power BI 中构建自己的 AutoML
使用 Docker 在 Azure 上部署机器学习管道
在 Google Kubernetes Engine 上部署机器学习管道
在 AWS Fargate 上部署机器学习管道
构建和部署你的第一个机器学习 Web 应用
使用 AWS Fargate Serverless 部署 PyCaret 和 Streamlit 应用
使用 PyCaret 和 Streamlit 构建和部署机器学习 Web 应用
在 GKE 上部署使用 Streamlit 和 PyCaret 构建的机器学习应用
文档
博客
GitHub
StackOverflow
安装 PyCaret
Notebook 教程
为 PyCaret 贡献
分类
回归
聚类
异常检测
自然语言处理
关联规则挖掘