文档
  • 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 提供支持
在本页
  • 构建和部署你的第一个机器学习 Web 应用
  • 👉 本教程将学习什么
  • 💻 本教程将使用哪些工具?
  • PyCaret
  • Flask
  • GitHub
  • Heroku
  • 为什么要部署机器学习模型?
  • 业务问题
  • 目标
  • 任务
  • 👉 任务 1 — 模型训练与验证
  • 👉 任务 2 — 构建 Web 应用
  • Web 应用的前端
  • Web 应用的后端
  • 👉 任务 3 — 在 Heroku 上部署 Web 应用
  • 下一篇教程
  • 重要链接
  • 想了解特定模块?
  • 另请参阅
  • 开发路线图中有哪些内容?
  • 您想贡献吗?

这有帮助吗?

  1. 学习 PYCARET
  2. 博客

构建和部署你的第一个机器学习 Web 应用

上一篇关于 PyCaret 你不知道的 5 件事下一篇使用 PyCaret 在 Power BI 中构建你自己的 AutoML

最后更新时间 2 年前

这有帮助吗?

构建和部署你的第一个机器学习 Web 应用

使用 PyCaret 在 Python 中训练和部署机器学习管道的初学者指南

作者:Moez Ali

在本教程中,我们将使用 PyCaret 开发一个机器学习管道,其中包括预处理转换和一个回归模型,用于根据患者的人口统计信息和基本健康风险指标(例如年龄、BMI、吸烟状况等)来预测患者的住院费用。

👉 本教程将学习什么

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

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

  • 使用名为“Flask”的 Python 框架构建一个简单的 Web 应用。

  • 将 Web 应用部署到“Heroku”并查看你的模型实际运行效果。

💻 本教程将使用哪些工具?

PyCaret

# for Jupyter notebook on your local computer
pip install **pycaret**

# for azure notebooks and google colab
!pip install **pycaret**

Flask

# install flask
pip install **Flask**

GitHub

Heroku

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

机器学习模型的部署是指将模型投入生产环境,供 Web 应用、企业软件和 API 使用的过程,通过提供新的数据点来消耗训练好的模型并生成预测结果。

业务问题

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

目标

构建一个 Web 应用,在 Web 表单中输入患者的人口统计信息和健康信息,以预测费用。

任务

  • 训练和验证模型,并开发用于部署的机器学习管道。

  • 构建一个包含自变量(年龄、性别、BMI、子女数量、吸烟者、区域)输入表单的基本 HTML 前端。

  • 使用 Flask 框架构建 Web 应用的后端。

  • 将 Web 应用部署到 Heroku。部署后,它将公开可用,并可以通过 Web URL 访问。

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

在本教程中,我们进行了两次实验。第一次实验使用了 PyCaret 的默认预处理设置(缺失值插补、类别编码等)。第二次实验进行了一些额外的预处理任务,如缩放和归一化、自动特征工程以及将连续数据分箱成间隔。参见第二次实验的设置示例

# 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 个,而原始数据集只有 7 个特征。所有新特征都是 PyCaret 中转换和自动特征工程的结果。

PyCaret 中模型训练和验证的示例代码

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

注意转换和自动特征工程的影响。R2 只需很少的努力就增加了 10%。我们可以比较两次实验的线性回归模型的残差图,并观察转换和特征工程对模型异方差性的影响。

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

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

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

# save transformation pipeline and model 
**save_model**(lr, model_name = 'c:/*username*/ins/deployment_28042020')

在 PyCaret 中保存模型时,会根据setup() 函数中定义的配置创建整个转换管道。所有内部依赖项都会自动协调。请参阅存储在“deployment_28042020”变量中的管道和模型。

我们已经完成了训练和选择用于部署模型的第一个任务。最终的机器学习管道和线性回归模型现在已作为文件保存在本地驱动器中,位置由save_model() 函数定义。(在本例中:c:/用户名/ins/deployment_28042020.pkl)。

👉 任务 2 — 构建 Web 应用

现在我们的机器学习管道和模型已经准备就绪,我们将开始构建一个 Web 应用,该应用可以连接到它们并对新数据进行实时预测。此应用包含两个部分

  • 前端(使用 HTML 设计)

  • 后端(使用 Python 中的 Flask 开发)

Web 应用的前端

通常,Web 应用的前端使用 HTML 构建,这不是本文的重点。我们使用了简单的 HTML 模板和 CSS 样式表来设计一个输入表单。以下是我们 Web 应用前端页面的 HTML 代码片段。

构建简单应用不需要成为 HTML 专家。有许多免费平台提供 HTML 和 CSS 模板,并可以通过使用拖放界面快速构建漂亮的 HTML 页面。

**CSS 样式表** CSS(也称为层叠样式表)描述了 HTML 元素如何在屏幕上显示。这是控制应用布局的有效方法。样式表包含背景颜色、字体大小和颜色、边距等信息。它们作为 .css 文件外部保存,并通过包含一行代码链接到 HTML。

Web 应用的后端

Web 应用的后端使用 Flask 框架开发。对于初学者来说,直观地将 Flask 视为一个库,就像在 Python 中导入其他任何库一样。请参阅使用 Python 中的 Flask 框架编写的后端代码片段示例。

如果你还记得上面的第一步,我们已经最终确定了线性回归模型,该模型是在 PyCaret 自动生成的 62 个特征上训练的。但是,我们 Web 应用的前端有一个输入表单,只收集了六个特征,即年龄、性别、BMI、子女数量、吸烟者、区域。

如何在实时将新数据点的 6 个特征转换为模型训练所用的 62 个特征?随着模型训练期间应用一系列转换,编码变得越来越复杂和耗时。

在 PyCaret 中,所有转换,如类别编码、缩放、缺失值插补、特征工程甚至特征选择,都会在生成预测之前自动实时执行。

想象一下,在可以使用模型进行预测之前,你需要编写多少代码来严格按照顺序应用所有转换。实际上,当你考虑机器学习时,你应该考虑整个机器学习管道,而不仅仅是模型本身。

**测试应用** 在将应用发布到 Heroku 之前,最后一步是在本地测试 Web 应用。打开 Anaconda Prompt 并导航到计算机上保存‘app.py’ 的文件夹。使用以下代码运行 python 文件

python **app.py**

执行后,将 URL 复制到浏览器中,它应该会打开托管在你本地机器 (127.0.0.1) 上的 Web 应用。尝试输入测试值,看看预测函数是否正常工作。在下面的示例中,一位 19 岁、无子女、来自西南地区的女性吸烟者的预期费用为 $20,900。

恭喜!你现在已经构建了你的第一个机器学习应用。现在是时候将这个应用从本地机器迁移到云端,以便其他人可以通过 Web URL 使用它了。

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

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

到目前为止,你应该已经熟悉了上面所示仓库中的所有文件,除了两个文件:‘requirements.txt’ 和 ‘Procfile’。

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

**Procfile** 只是简单的一行代码,向 Web 服务器提供启动指令,指示用户登录应用时应首先执行哪个文件。在此示例中,应用文件名是 ‘**app.py’**,应用的名称也是 ‘app’。(因此是 app:app)

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

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

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

步骤 3 — 连接到托管代码的 GitHub 仓库

步骤 4 — 部署分支

步骤 5 — 等待 5-10 分钟,然后就搞定!

在结束本教程之前,还有最后一件事要看。

到目前为止,我们已经构建并部署了一个与我们的机器学习管道协同工作的 Web 应用。现在假设你已经有一个企业应用,并希望将模型的预测集成到其中。你所需要的是一个 Web 服务,你可以通过 API 调用提供输入数据点并获取预测结果。为了实现这一点,我们在‘app.py’ 文件中创建了predict_api 函数。请参阅代码片段

以下是如何在 Python 中使用 requests 库调用此 Web 服务

import **requests**url = 'https://pycaret-insurance.herokuapp.com/predict_api'pred = **requests.post(**url,json={'age':55, 'sex':'male', 'bmi':59, 'children':1, 'smoker':'male', 'region':'northwest'})**print**(pred.json())

下一篇教程

在下一篇关于部署机器学习管道的教程中,我们将深入探讨如何使用 Docker 容器部署机器学习管道。我们将演示如何在 Linux 上轻松部署和运行容器化的机器学习应用。

重要链接

想了解特定模块?

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

另请参阅

PyCaret Notebook 入门教程

开发路线图中有哪些内容?

您想贡献吗?

在我们的我们演示了如何使用在 Power BI 中训练和部署机器学习模型。如果你之前没听说过 PyCaret,请阅读我们的快速入门。

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

是一个允许你构建 Web 应用的框架。Web 应用可以是商业网站、博客、电子商务系统,或者是一个使用训练好的模型实时从提供的数据中生成预测的应用。如果你没有安装 Flask,可以使用 pip 进行安装。

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

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

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

通常构建机器学习模型是为了预测结果(对于,对于,对于等等)。有两种主要的预测方式:(i) 批量预测;(ii) 实时预测。在我们的我们演示了如何在 Power BI 中部署机器学习模型并进行批量预测。在本教程中,我们将了解如何部署机器学习模型进行实时预测。

()

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

两次实验信息网格对比
转换后数据集中的列
线性回归模型的 10 折交叉验证
线性回归模型的残差图
使用 PyCaret 创建的管道
来自 home.html 文件的代码片段
来自 home.html 文件的代码片段
来自 app.py 文件的代码片段
执行 app.py 时 Anaconda Prompt 中的输出
在本地机器上打开的 Web 应用

如果你想跟着做,可以 fork 这个来自 GitHub 仓库。如果你不知道如何 fork 仓库,请官方 GitHub 教程。

https://www.github.com/pycaret/deployment-heroku
requirements.txt
Procfile
Heroku 面板
Heroku — 创建新应用
Heroku — 连接到 GitHub
Heroku — 部署分支
Heroku — 部署成功

应用已发布到 URL

https://pycaret-insurance.herokuapp.com/
来自 app.py 文件(Web 应用后端)的代码片段
在 Notebook 中向已发布的 Web 服务发送请求以生成预测

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

我们正在积极改进 PyCaret。我们未来的开发路线图包括一个新的时间序列预测模块、与TensorFlow 的集成以及 PyCaret 可扩展性的重大改进。如果您想分享您的反馈并帮助我们进一步改进,可以在网站上,或在我们的或页面上留言。

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

请在我们的上给我们点亮 ⭐️,如果您喜欢 PyCaret。

Medium

LinkedIn

Twitter

📖
上一篇文章
PyCaret
公告
PyCaret
Flask
GitHub
注册
Heroku
注册
分类
回归
聚类
上一篇教程
数据源
点击这里
入门教程
网站
仓库
阅读此文
https://pycaret-insurance.herokuapp.com/
LinkedIn
Youtube
用户指南 / 文档
GitHub 仓库
安装 PyCaret
Notebook 教程
贡献 PyCaret
分类
回归
聚类
异常检测
自然语言处理
关联规则挖掘
聚类
异常检测
自然语言处理
关联规则挖掘
回归
分类
填写此表单
GitHub
LinkedIn
开放问题
GitHub 仓库
https://medium.com/@moez_62905/
https://www.linkedin.com/in/profile-moez/
https://twitter.com/moezpycaretorg1