文档
  • PyCaret 3.0
  • 入门
    • 💻安装
    • 🚀快速入门
    • ⭐教程
    • 📶模块
    • ⚙️数据预处理
      • 数据准备
      • 缩放和转换
      • 特征工程
      • 特征选择
      • 其他设置参数
    • 💡函数
      • 初始化
      • 训练
      • 优化
      • 分析
      • 部署
      • 其他
  • 学习 PYCARET
    • 📖博客
      • 宣布 PyCaret 1.0
      • 宣布 PyCaret 2.0
      • 关于 PyCaret 你不知道的 5 件事
      • 构建并部署你的第一个机器学习 Web 应用
      • 使用 PyCaret 在 Power BI 中构建你自己的 AutoML
      • 在 Google Kubernetes 上部署 ML Pipeline
      • 在 AWS Fargate 上部署 PyCaret 和 Streamlit
      • 使用 PyCaret 在 Power BI 中进行异常检测
      • 在 Google Kubernetes 上部署 ML 应用
      • 在 GKE 上部署机器学习 Pipeline
      • 在 AWS Fargate 上部署机器学习 Pipeline
      • 使用 Docker 在云端部署 ML Pipeline
      • 使用 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 预测 Lead Score(正确方法)
      • 使用 PyCaret 在 Python 中进行 NLP 文本分类
      • 使用 PyCaret 预测 Lead Score(正确方法)
      • 使用 PyCaret 预测黄金价格暴跌
      • 使用机器学习预测黄金价格
      • PyCaret 2.1 特征总结
      • 使用 PyCaret 将 ML 模型部署到 SQL Server
      • 使用 PyCaret 和 Gradio 为你的 ML 加速
      • 时间序列 101 - 针对初学者
      • 使用 PyCaret 进行时间序列异常检测
      • 使用 PyCaret 回归进行时间序列预测
      • 使用 PyCaret 在 Power BI 中进行主题建模
      • 使用 PyCaret 编写和训练自定义 ML 模型
      • 使用 PyCaret 和 Streamlit 构建和部署 ML 应用
      • PyCaret 2.3.6 来了!了解新特性?
    • 📺视频
    • 🛩️速查表
    • ❓常见问题
    • 👩‍💻示例
  • 重要链接
    • 🛠️发布说明
    • ⚙️API 参考
    • 🙋 讨论
    • 📤问题
    • 👮 许可证
  • 媒体
    • 💻Slack
    • 📺YouTube
    • 🔗LinkedIn
    • 😾GitHub
    • 🔅Stack Overflow
由 GitBook 提供支持
在本页
  • 使用 PyCaret 和 Streamlit 构建和部署机器学习 Web 应用
  • 回顾
  • 👉 你将从本教程中学到什么
  • 💻 本教程所需的工具
  • PyCaret
  • Streamlit
  • GitHub
  • Heroku
  • ✔️让我们开始吧……
  • 为什么部署机器学习模型?
  • 👉 在线预测
  • 👉 批量预测
  • 设置业务场景
  • 目标
  • 任务
  • 👉 任务 1 — 模型训练和验证
  • 👉 任务 2 — 构建 Web 应用
  • 头部 / 布局
  • 在线预测
  • 批量预测
  • 👉 任务 3 — 在 Heroku 上部署 Web 应用
  • requirements.txt
  • setup.sh
  • Procfile
  • PyCaret 2.0.0 正在到来!
  • 想了解某个特定模块吗?
  • 另请参阅
  • 你想贡献吗?

这有帮助吗?

  1. 学习 PYCARET
  2. 博客

使用 PyCaret 和 Streamlit 构建和部署 ML 应用

上一篇使用 PyCaret 编写和训练自定义 ML 模型下一篇PyCaret 2.3.6 来了!了解新特性?

最后更新于 2 年前

这有帮助吗?

使用 PyCaret 和 Streamlit 构建和部署机器学习 Web 应用

在 Heroku PaaS 上部署机器学习应用的初学者指南

作者:Moez Ali

回顾

通过本教程的学习,你将能够构建一个功能齐全的 Web 应用,使用训练好的机器学习模型生成在线预测(逐个)和批量预测(通过上传 csv 文件)。最终的应用界面如下

👉 你将从本教程中学到什么

  • 什么是部署?为什么我们要部署机器学习模型?

  • 使用 PyCaret 开发机器学习 Pipeline 并训练模型。

  • 使用 Streamlit 开源框架构建一个简单的 Web 应用。

  • 在“Heroku”上部署 Web 应用并查看模型的运行效果。

本教程将涵盖整个工作流程,从训练机器学习模型并在 Python 中开发 Pipeline,到使用 streamlit 开发一个简单的 Web 应用,最后在 Heroku 云平台上部署该应用。

过去,我们已经涵盖了使用 docker 进行容器化以及在 Azure、GCP 和 AWS 等云平台上的部署。如果你有兴趣了解更多信息,可以阅读以下文章

💻 本教程所需的工具

PyCaret

pip install **pycaret**

Streamlit

pip install **streamlit**

GitHub

Heroku

✔️让我们开始吧……

为什么部署机器学习模型?

部署机器学习模型是指将模型投入生产的过程,以便 Web 应用、企业软件和 API 可以使用训练好的模型并生成新的数据点预测。

👉 在线预测

在线预测场景适用于你希望逐个数据点生成预测的情况。例如,你可以使用预测立即决定某个特定交易是否可能是欺诈性的。

👉 批量预测

批量预测在你希望一次性为一组观测数据生成预测时很有用。例如,如果你想决定哪些客户作为产品广告活动的定位对象,你可以获取所有客户的预测得分,对这些得分进行排序以确定哪些客户最有可能购买,然后可能定位最有可能购买的前 5% 客户。

在本教程中,我们将构建一个可以同时进行在线预测和批量预测(通过上传包含新数据点的 csv 文件)的应用。

设置业务场景

一家保险公司希望通过更好地预测患者住院时的费用来改善其现金流预测,预测基于人口统计学信息和基本的患者健康风险指标。

目标

构建一个支持在线(逐个)预测和批量预测的 Web 应用,使用训练好的机器学习模型和 Pipeline。

任务

  • 使用 PyCaret 训练、验证并开发机器学习 Pipeline。

  • 构建一个具有两种功能的前端 Web 应用:(i)在线预测和(ii)批量预测。

  • 在 Heroku 上部署 Web 应用。部署后,它将公开可用,并通过 Web URL 进行访问。

👉 任务 1 — 模型训练和验证

在本教程中,我们进行了两次实验。第一次实验使用了 PyCaret 的默认预处理设置。第二次实验包含一些额外的预处理任务,例如缩放和归一化、自动特征工程以及将连续数据分箱。查看第二次实验的 setup 代码

**# Experiment No. 2**

from **pycaret.regression** import *****

r2 = **setup**(data, target = 'charges', session_id = 123,
           normalize = True,
           polynomial_features = True, trigonometry_features = True,
           feature_interaction=True, 
           bin_numeric_features= ['age', 'bmi'])

奇迹只发生在那几行代码中。注意,在实验 2 中,转换后的数据集有 62 个用于训练的特征,这些特征仅来源于原始数据集中的 6 个特征。所有新特征都是 PyCaret 中转换和自动特征工程的结果。

PyCaret 模型训练示例代码

# Model Training and Validation 
lr = **create_model**('lr')

注意转换和自动特征工程的影响。R2 提高了 10%,且仅花费了很少的精力。我们可以比较两次实验的线性回归模型的残差图,观察转换和特征工程对模型**异方差性**的影响。

# plot residuals of trained model**
plot_model**(lr, plot = 'residuals')

机器学习是一个迭代过程。迭代次数和所使用的技术取决于任务的关键程度以及预测错误可能带来的影响。在医院重症监护室实时预测患者预后的机器学习模型的严重性和影响,远大于一个用于预测客户流失的模型。

在本教程中,我们只进行了两次迭代,并将使用第二次实验的线性回归模型进行部署。然而,在此阶段,模型仍然只是 Notebook / IDE 中的一个对象。要将其保存为一个文件,以便传输给其他应用并被其使用,请执行以下代码

# save transformation pipeline and model 
**save_model**(lr, model_name = 'deployment_28042020')

当你在 PyCaret 中保存模型时,会基于 **setup()** 函数中定义的配置创建整个转换 Pipeline。所有相互依赖关系都会自动协调。查看存储在 ‘deployment_28042020’ 变量中的 Pipeline 和模型

我们已经完成了训练和模型选择。最终的机器学习 Pipeline 和线性回归模型现已保存为一个 pickle 文件(deployment_28042020.pkl),该文件将用于 Web 应用中,生成新数据点的预测。

👉 任务 2 — 构建 Web 应用

现在我们的机器学习 Pipeline 和模型已经准备就绪,我们将开始构建一个前端 Web 应用,该应用可以对新数据点生成预测。该应用将支持“在线”预测和通过 csv 文件上传进行“批量”预测。让我们将应用代码分解为三个主要部分

头部 / 布局

本节导入库,加载训练好的模型,并创建一个基本布局:顶部是徽标,下面是 jpg 图片,侧边栏有一个下拉菜单用于切换“在线”和“批量”预测。

在线预测

本节处理应用的第一项功能,即在线(逐个)预测。我们使用 streamlit 组件,如数字输入框、文本输入框、下拉菜单和复选框,来收集用于训练模型的数据点,例如年龄、性别、BMI、子女数、吸烟者、地区。

批量预测

这部分处理第二项功能,即批量预测。我们使用了 streamlit 的file_uploader 组件来上传 csv 文件,然后调用 PyCaret 原生的 **predict_model()** 函数生成预测结果,并使用 streamlit 的 write() 函数显示。

如果你还记得上面的任务 1,我们最终确定了一个线性回归模型,该模型使用从 6 个原始特征中提取的 62 个特征进行训练。然而,我们的 Web 应用前端有一个输入表单,只收集了这六个特征:年龄、性别、BMI、子女数、吸烟者、地区。

如何将新数据点的 6 个特征转换为用于训练模型的 62 个特征呢?我们无需为此担心,因为 PyCaret 通过协调转换 Pipeline 来自动处理这个问题。当你调用 PyCaret 训练的模型上的 predict 函数时,所有转换都会在生成预测之前自动(按顺序)应用。

**测试应用** 在将应用发布到 Heroku 之前,最后一步是在本地测试 Web 应用。打开 Anaconda Prompt,导航到你的项目文件夹,并执行以下代码

**streamlit **run app.py

👉 任务 3 — 在 Heroku 上部署 Web 应用

现在模型已经训练完成,机器学习 Pipeline 已准备就绪,并且应用已在本地机器上测试通过,我们就可以开始在 Heroku 上进行部署了。将应用源代码上传到 Heroku 有几种方法。最简单的方法是将 GitHub 仓库链接到你的 Heroku 账户。

到现在为止,你已经熟悉了仓库中的所有文件,除了三个文件:‘requirements.txt’、‘setup.sh’ 和 ‘Procfile’。让我们看看它们是什么

requirements.txt

**requirements.txt** 文件是一个文本文件,包含执行应用所需的 python 包名称。如果这些包未安装在应用运行的环境中,应用将失败。

setup.sh

setup.sh 是一个为 bash 编写的脚本。它包含用 Bash 语言编写的指令,并且像 requirements.txt 一样,**它用于为我们的 streamlit 应用在云上运行创建必要的环境。

Procfile

Procfile 只是一行代码,它向 Web 服务器提供启动指令,指示在应用触发时应该执行哪个文件。在本例中,‘Procfile’ 用于执行 **setup.sh**,这将为 streamlit 应用创建必要的环境,而第二部分“streamlit run app.py”则用于执行应用(这与你在本地计算机上执行 streamlit 应用的方式类似)。

将所有文件上传到 GitHub 仓库后,我们现在就可以开始在 Heroku 上进行部署了。按照以下步骤操作

步骤 1 — 在 heroku.com 上注册并点击“创建新应用”

步骤 2 — 输入应用名称和区域

步骤 3 — 连接到你的 GitHub 仓库

步骤 4 — 部署分支

步骤 5 — 等待 10 分钟,然后 BOOM

PyCaret 2.0.0 正在到来!

想了解某个特定模块吗?

截至首次发布 1.0.0,PyCaret 提供了以下可用模块。点击下面的链接查看文档和 Python 中的工作示例。

另请参阅

Notebook 中的 PyCaret 入门教程

你想贡献吗?

在我们的关于在云中部署机器学习 Pipeline 的文章中,我们演示了如何在 PyCaret 中开发机器学习 Pipeline,使用 Docker 容器化 Flask 应用,并使用 AWS Fargate 进行无服务器部署。如果你之前没有听说过 PyCaret,可以阅读这篇来了解更多信息。

在本教程中,我们将使用 PyCaret 训练一个机器学习 Pipeline,并使用一个开源框架创建一个 Web 应用。这个 Web 应用将为业务用户提供一个简单的界面,用于使用训练好的机器学习 Pipeline 对新数据集生成预测。

https://pycaret-streamlit.herokuapp.com

是一个开源、低代码的 Python 机器学习库,用于训练和部署机器学习 Pipeline 和模型到生产环境。PyCaret 可以使用 pip 轻松安装。

是一个开源的 Python 库,可以轻松构建漂亮的定制 Web 应用,用于机器学习和数据科学。Streamlit 可以使用 pip 轻松安装。

是一个基于云的服务,用于托管、管理和控制代码。想象一下你在一个大型团队中工作,多人(有时甚至数百人)正在进行更改。PyCaret 本身就是一个开源项目的例子,数百名社区开发者不断贡献源代码。如果你之前没有使用过 GitHub,你可以注册免费账户。

是一个平台即服务(PaaS),支持基于托管容器系统的 Web 应用部署,并提供集成数据服务和强大的生态系统。简单来说,这允许你将应用从本地机器部署到云端,以便任何人都可以通过 Web URL 访问。在本教程中,我们选择 Heroku 进行部署,因为它在您注册新账户时提供免费资源时间。

机器学习工作流程(从训练到在 PaaS 上部署)

通常构建机器学习模型是为了预测结果(二元值,例如用于的 1 或 0,用于的连续值,用于的标签等)。预测新数据点的方法主要有两种

()

训练和模型验证在集成开发环境 (IDE) 或 Notebook 中进行,无论是在本地机器还是云端。如果你之前没有使用过 PyCaret,了解更多关于 PyCaret 的信息,或者查看在我们的.

两次实验的信息网格比较
转换后数据集中的列
线性回归模型的 10 折交叉验证
线性回归模型的残差图
使用 PyCaret 创建的 Pipeline
app.py — 代码片段 第 1 部分
app.py — 代码片段 第 2 部分
app.py — 代码片段 第 3 部分
Streamlit 应用测试 — 在线预测
Streamlit 应用测试 — 批量预测

如果你想跟着操作,可以 fork 这个从 GitHub。如果你不知道如何 fork 仓库,请阅读官方 GitHub 教程。

https://www.github.com/pycaret/pycaret-deployment-streamlit
requirements.txt
setup.sh
Procfile
Heroku 控制面板
Heroku — 创建新应用
Heroku — 连接到 GitHub
Heroku — 部署分支

应用已发布到 URL

https://pycaret-streamlit.herokuapp.com/

我们收到了社区压倒性的支持和反馈。我们正在积极改进 PyCaret 并准备下一个版本。PyCaret 2.0.0 将会更强大更好。如果你想分享你的反馈并帮助我们进一步改进,你可以在网站上或在我们的或页面上留下评论。

关注我们的并订阅我们的频道,了解更多关于 PyCaret 的信息。

PyCaret 是一个开源项目。欢迎所有人贡献。如果你想贡献,请随意在上开展工作。dev-1.0.1 分支接受包含单元测试的拉取请求。

如果你喜欢 PyCaret,请在我们的上给我们一个 ⭐️。

Medium

LinkedIn

Twitter

📖
最新帖子
公告
Streamlit
在 AWS Fargate 上部署机器学习 Pipeline
在 Google Kubernetes Engine 上部署机器学习 Pipeline
在 AWS Web Service 上部署机器学习 Pipeline
在 Heroku PaaS 上构建并部署你的第一个机器学习 Web 应用
PyCaret
Streamlit
GitHub
注册
Heroku
注册
分类
回归
聚类
数据源
点击此处
入门教程
网站
仓库
阅读此文
https://pycaret-streamlit.herokuapp.com/
填写此表单
GitHub
LinkedIn
LinkedIn
YouTube
分类
回归
聚类
异常检测
自然语言处理
关联规则挖掘
聚类
异常检测
自然语言处理
关联规则挖掘
回归
分类
未解决的问题
GitHub 仓库
https://medium.com/@moez_62905/
https://www.linkedin.com/in/profile-moez/
https://twitter.com/moezpycaretorg1