关于机器学习:工业场景全流程机器学习开发并部署服务到云端-⛵

本文以保险金额预估为例,解说机器学习从开发到云端服务部署的全流程:基于PyCaret开发机器学习全流程、基于Flask搭建繁难前端Web应用程序、在Heroku云上部署机器学习利用。


💡 作者:韩信子@ShowMeAI
📘 机器学习实战系列:https://www.showmeai.tech/tutorials/41
📘 本文地址:https://www.showmeai.tech/article-detail/333
📢 申明:版权所有,转载请分割平台与作者并注明出处
📢 珍藏ShowMeAI查看更多精彩内容

本篇内容 ShowMeAI 将带大家学习,从头开始构建机器学习管道,应用 Flask 框架构建 Web 应用程序,并部署到云服务器上的过程。具体包含:

  • 何为机器学习利用部署
  • 基于 PyCaret 开发机器学习全流程
  • 基于 Flask 搭建繁难前端 Web 应用程序
  • 在 Heroku 云上部署机器学习利用

本示例中的利用为保险金额预估,部署好的云端服务页面如下图所示,能够点击 📘这里体验。

💡 环境&工具

💦 PyCaret

📘PyCaret 是一个开源的低代码机器学习库,用于在生产中训练和部署机器学习管道/流水线和模型。咱们能够通过pip装置 PyCaret。

# 装置pycaret
pip install pycaret

💦 Flask

📘Flask 是一个用于在 Python 中构建 Web 应用程序的轻量化框架。咱们本次的利用须要部署成Web端可交互操作应用的状态,会用到这个工具库,咱们同样能够通过pip装置它。

# 装置flask
pip install flask

💦 Heroku

📘 Heroku 是一个平台即服务(PaaS),它反对基于托管容器零碎部署 Web 应用程序,具备集成的数据服务和弱小的生态系统。咱们将基于它将应用程序部署到云端,进而大家能够间接通过 URL 在浏览器端拜访利用。

💡 部署机器学习服务

在企业的理论生产中,咱们常常会把机器学习模型构建成服务状态,这样合作的开发共事能够通过接口(API)来拜访模型服务,实现预估工作,这被称为部署机器学习利用过程。

更全一点说,生产中应用机器学习管道有两种宽泛的形式:

  • 批量预测

将模型或管道存储在磁盘中,定期运行脚本,加载模型和数据,生成预测并将输入写入磁盘。这种状况下,多个预测会并行。它对于时效性要求不高。

  • 在线预测

须要实时预测,大家应用到的很多 app,其实都是输出信息,而后在单击提交按钮时,实时预估生成预测的。比方你在电商平台输出搜索词,点击查问,能够看到模型排序好的后果列表返回。

本教程中,咱们解说的是『在线预测』这种模式。咱们将首先应用 PyCaret 在 Python 中构建机器学习管道,而后应用 Flask 构建 Web 应用程序,最初将所有这些部署在 Heroku 云上。

整个机器学习管道(pipeline)如下图所示:

💡 场景案例&手把手

本案例中用作示例的数据来自保险场景,保险公司心愿通过应用人口统计学信息和根本患者衰弱危险特色,更精确地预测患者保单费用,以优化其应用的现金流预测的准确性。数据是 PyCaret 自带的,数据的简略速览如下:

上面咱们逐渐实现机器学习管道构建与云端部署的过程。

💦 第一步:构建机器学习流水线

咱们把整个建模过程构建为一个流水线,这里咱们应用 PyCaret,简直能够自动化地实现这个过程。

# 加载数据
from pycaret.datasets import get_data
data = get_data('insurance')

# 初始化设置
from pycaret.regression import *
s = setup(data, target = 'charges', session_id = 123, normalize = True, polynomial_features = True, trigonometry_features = True, feature_interaction=True, bin_numeric_features= ['age', 'bmi'])

上述的代码会自动化实现数据转换,转换后的数据集有 62 个用于训练的特色,这些特色由原始数据集的 7 个特色变换而来。以下为对应的特色列表:

应用PyCaret进行建模和评估非常简单,上面示例代码中,咱们抉择逻辑回归模型,并进行10折穿插验证:

# 模型训练
lr = create_model('lr')

# 绘制训练模型的残差 
plot_model(lr, plot='residuals')

上述流程之后,咱们能够应用该save_model函数保留整个建模流水线。

# 保留转换流水线和模型
save_model(lr, model_name='/username/ins/deployment')

这样咱们就疾速实现了第 1 步,留神,理论业务场景下,大家会做更精细化的数据荡涤、特色工程和模型调优,咱们本次的指标是给大家演示从建模到部署的全流程办法,因而这个局部绝对简略。

PyCaret 自动化建模的输入是一个流水线/pipeline,蕴含几个数据转换步骤(如特色工程、缩放、缺失值插补等)和机器学习模型。流水线保留为pkl格局的文件,咱们在后续构建 Flask 应用程序会应用到它。

💦 第二步:应用 Flask 构建前端应用程序

在实现咱们的机器学习流水线和模型之后,咱们要开始开发 Web 应用程序,它由两个局部组成:

  • 前端(基于 HTML 构建网页端可显示和交互的内容)
  • 后端(基于 Flask 开发实现接管申请后能够进行预估的程序)

① Web 利用前端

很多 Web 应用程序的前端都是应用 HTML 构建的,咱们在本篇内容中不会深刻解说前端相干的内容。为了构建一个输出表单(以接管用户实时预估时输出的字段取值),咱们基于一个根本的 HTML 模板实现前端网页,而后蕴含一个 CSS 样式表。

◉ HTML 代码实现

以下是咱们 Web 应用程序主页的 HTML 代码。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Predict Insurance Bill</title>
  <link href='https://fonts.googleapis.com/css?family=Pacifico' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Arimo' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Hind:300' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans+Condensed:300' rel='stylesheet' type='text/css'>
<link type="text/css" rel="stylesheet" href="{{ url_for('static', filename='./style.css') }}">
  
</head>

<body>
 <div class="login">
    <h1>Predict Insurance Bill</h1>

     <!-- Form to enter new data for predictions  -->
    <form action="{{ url_for('predict')}}"method="POST">
      <input type="text" name="age" placeholder="Age" required="required" /><br>
        <input type="text" name="sex" placeholder="Sex" required="required" /><br>
        <input type="text" name="bmi" placeholder="BMI" required="required" /><br>
        <input type="text" name="children" placeholder="Children" required="required" /><br>
        <input type="text" name="smoker" placeholder="Smoker" required="required" /><br>
        <input type="text" name="region" placeholder="Region" required="required" /><br>

        <button type="submit" class="btn btn-primary btn-block btn-large">Predict</button>
    </form>

   <br>
   <br>
  
   
 </div>
 {{pred}}

</body>
</html>

大家如果要构建简略的应用程序,不须要专门去学一遍 HTML 的高级常识。大家在互联网上能够找到大量 HTML 和 CSS 模板,甚至有些 📘在线平台 能够通过应用拖拽构建用户界面,并疾速生成对应的 HTML 代码。

◉ CSS 样式表 CSS 负责形容 HTML 元素在屏幕上的出现款式,借助 CSS 能够十分无效地控制应用程序的布局。存储在样式表中的信息包含边距、字体大小和色彩以及背景色彩。这些信息以 CSS 扩展名的文件格式存储在内部地位,主 HTML 文件蕴含对 CSS 文件的援用。

② Web 利用后端

上面咱们实现这个利用的后端,咱们在 Python 中能够应用 Flask 工具库实现。对于 Flask 的具体常识大家能够参考 📘官方网站。咱们的局部代码如下:

在云端部署之前,咱们须要在本地测试利用是否失常工作。咱们在命令行运行 python app.py

python app.py

上图中大家能够在最初一行看到本地的测试 URL,咱们把它粘贴到浏览器能够查看 Web 应用程序是否失常。咱们还能够通过输出一些测试数据来查看预测性能是否失常运行。如下例中,咱们输出信息:19 岁、吸烟、西南地区、没有孩子、女性,模型预测住院费用为 20900 美元。

好啦,测试结束,齐全能够失常工作,咱们在下一步把它部署到云端。

💦 第三步:在 Heroku 上部署 ML 流水线和应用程序

模型训练实现后,机器学习流水线曾经筹备好,且实现了本地测试,咱们当初筹备开始部署到 Heroku。有多种办法能够实现这个步骤,最简略的是将代码上传 GitHub ,并连贯 Heroku 帐户实现部署。

下图是上传好的截图,大家能够在 📘https://www.github.com/pycaret/deployment-heroku 查看。

将所有文件上传到 GitHub 后,咱们就能够开始在 Heroku 上进行部署了。如下为操作步骤:

① 注册并点击 『 创立新利用 』

在 📘heroku 上能够实现上述操作,如下图所示

② 输出利用名称和地区

③ 连贯到托管代码的 GitHub 存储库

④ 部署分支

⑤ 期待部署实现

部署实现后,在有网络的状况下,就都能够拜访对应的应用程序了 📘https ://pycaret-insurance.herokuapp.com/。

参考资料

  • 📘 PyCaret:https://www.pycaret.org/
  • 📘 Flask:https://flask.palletsprojects.com/en/2.2.x/
  • 📘 Heroku:https://www.heroku.com/
  • 📘 HTML 和 CSS 模板在线平台:http://www.vvveb.com/vvvebjs/editor.html
  • 📘 Flask 的具体常识:https://dormousehole.readthedocs.io/en/latest/

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理