手把手教你用 Python Pandas,Keras ,Flask ,Docker和 Heroku 部署机器学习模型(附代码)

部署ML/DL 模型到一个consolidated AI演示 关键字:IRIS,IntegratedML,Flask,FastAPI,TensorFlow Serving,HAProxy,Docker,Covid-19 目的: 过去几个月里,我们提到了一些深度学习和机器学习的快速演示,包括一个简单的 Covid-19 X 射线图像分类器和一个用于可能的 ICU 入院的 Covid-19 实验室结果分类器。我们还介绍了 ICU 分类器的 Integrat... 阅读详情

                                                                            Fly-AI竞赛服务平台 flyai.com

在开始学习之前推荐大家可以多在        FlyAI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。 

 

 

在2019年橄榄球世界杯期间,我做了一个小型的数据科学项目来尝试预测比赛结果。我现在将其记录下来。我已经将其扩展成了一个端对端学习项目的示例,来展示如何部署一个应用机器学习模型的交互式网页端应用。

目标

概述从原始数据到可用的已部署机器学习应用程序所需的关键步骤。  

完成此操作后——您就可以选择一个感兴趣的主题,找到一些数据,动手实践,直到建起自己的机器学习应用程序,即从数据准备到部署。

关键步骤

1. 使用Pandas处理数据&使用SQLite储存数据

2. 使用Keras建立机器学习模型(神经网络)

3. 使用Flask(还有一些CSS&HTML)建立Web应用

4. 使用Docker和Heroku部署应用

代码可以在GitHub上获取,可用的应用可以在此浏览。(注意,这些代码还未达到生产水平,但是足以展示开头应该做的内容。这个可用的应用使用的是特定时点数据的快照)。

 

1. 使用Pandas处理数据&使用SQLite储存数据

数据科学家会在这上面花费45%的时间,只是为了让数据满足建立模型的要求

数据处理包括清洗、结构化和丰富,借此使你的数据满足建立机器学习模型的要求。例如,解决空缺数据或者不规则格式。

除非你已经有了一个干净的数据集(现实中几乎不可能发生),你将需要使用探索性数据分析(EDA)来更好得理解数据。

Pandas-profiling 是用于EDA的一个优秀的模块。他会生成一个DataFrames格式的文件报告,其中包括分位数和描述性统计信息、相关系数、缺失值和直方图。

使用Pandas-profiling进行EDA的一个输示例

  • 为了这个项目,我需要来自  ESPN Scrum 的数据。您可以在 data_prep.py 属性定义格式,例如使用  to_datetime()   方法匹配日期。我还用了  世界橄榄球排名 的数据来丰富,使用微软的技术衡量  TrueSkill 评级系统。

  • 如果你正在寻找数据集,加州大学欧文分校的机器学习知识库 和 Kaggle 都是值得探索的好资源。另外,您也可以使用 BeautifulSoup 抓取来获取数据。

  • 我将我的数据帧作为表存储在SQLite数据库中。这是一个轻量级数据库,在世界上应用也最广泛。当然你也可以使用普通的csv文件,但是这提供了一个学习SQLite的机会。下面的代码连接到 match_results 数据库,并将  latest_stats  作为表写入其中。

  • conn = sqlite3.connect('match_results.db')
    latest_stats.to_sql('latest_stats', conn, if_exists='replace')

    现在我们有了测试和训练机器学习模型的数据时间。  

2. 机器学习- Keras神经网络  

测试中

使用均方误差(MSE)作为损失函数来最小化。我们进行了超参数调整(Jason Brownlee在这里提供了教程),并且我尝试了宽网络(带有大量神经元的一层)和深网络(更多层但每层神经元更少),直到MSE没有显著改善。  

您希望模型能够很好地处理不可见的数据。如果你对你的模型进行过拟合,你的训练数据可能会有一个小的错误,但是你的测试数据(看不见的)会有一个大的错误。当这种情况发生时,模型已经学习训练数据几乎太好,不能推广到新的数据。有避免过拟合的各种技术。

下面我们可以看到,训练数据和测试数据的MSE在大约25个时期之前迅速下降,然后保持相对稳定。  

Training

最终模型的第一层有15个神经元,第二层有8个神经元,均带有矫正线性激活单元(ReLU)。

它是用Adam优化算法编译的,这是一个 efficient gradient descent algorithm.

model = Sequential()
model.add(Dense(15, input_dim=5, kernel_initializer='normal', activation='relu'))
model.add(Dense(8, kernel_initializer='normal', activation='relu'))
model.add(Dense(2, kernel_initializer='normal'))
model.compile(loss='mse', optimizer='adam')

拯救你的模型

  • save() 函数用于保存最终的Keras模型。这节省了模型架构和权重,并允许我们稍后在应用程序中加载模型来对新数据进行预测。

3.Web应用与Flask(和一些CSS和HTML)

Flask  是一个web框架,可用于相对快速地开发web应用程序。你可以在这里找到一个快速发展的步行。

下面的代码  app.py  文件基本上建立了主页,并为用户提供index.html: 

应用程序的主页与用户输入表单

WTForms 用于表单,以便用户可以选择他们的两个橄榄球队。单击按钮时,输入将通过model_predict函数发送到保存的ML模型。得到的模型预测然后作为输入变量发送到predict .html模板。 

@app.route("/", methods=['GET', 'POST'])
def home():

    form = TeamForm(request.form)

    # Get team names and send to model
    if request.method == 'POST' and form.validate():
        team1 = request.form['team1']
        team2 = request.form['team2']
        return render_template('prediction.html', win_prob=model_predict(team1,team2)[0],
                               score=model_predict(team1, team2)[1])

    # Send template information to index.html
    return render_template('index.html', form=form)

 

html模板做了三件关键的事情:  

  1. 获取从模型输出发送给最终用户的获胜概率和分数(通过win_prob和分数变量)  
  2. 提供一个按钮,让用户返回主页  
  3. 引用  main.css  文件提供一些样式

预测结果页面

<!DOCTYPE html>
<head>
  <title>Prediction</title>
  <link rel="stylesheet" href="/static/css/main.css">
</head>

<body>
  <div >
    <h1>
      <center>Predictions</center>
    </h1>

    {% block content %}
    <div >{{win_prob}}</div>

    <div >{{score}}</div>

    <form action="/button" method = "POST">
    <p><input type = "submit" value = "Return" /></p>
    </form>

    {% endblock %}

  </div>
</body>

</html>

 

  • 这是它的内容!总之,你明白:

  • 两个模板:首页和预测结果页面的index.html和predict .html  

  • 4. 使用Docker和Heroku部署应用

  • Docker  容器

  • 我不会去太详细地介绍 Docker ,但关键要知道的是,它允许您计划您的应用程序在一个自给自足的容器,可以跨系统即使用它创建一个便携式容器,让它更容易部署你的应用,你可以深入的细节在官方 Docker 文档。

  • 下载Docker的方法在这里。 

  • 在你的app目录中创建一个 Dockerfile 。这包含了构建 Docker 映像的说明。Dockerfiles 的最佳实践可以在这里和这里查看。下面您将看到,我已经包含了运行 requirements.txt 文件的说明,该文件包含应用程序的依赖项。  

FROM Python:3.7.3-stretchRUN mkdir /app
WORKDIR /app#Copy all files
COPY . .# Install dependencies
RUN pip install --upgrade pip
RUN pip install -r requirements.txt# Run
CMD ["python","./main.py"]

打开终端,进入包含Dockerfile和app的目录。使用build命令构建你的镜像:  docker build -t rugby_prediction  这将从Dockerfile构建Docker映像。

  • 你可以在本地使用 run  创建容器的命令 docker run --name rugby -p 5000:5000 -d rugby_prediction 在这里,-p将容器的端口发布到主机,-d使容器在后台运行。一旦这是运行,你应该能够查看你的应用程序运行在你的浏览器(在Docker桌面,点击打开浏览器按钮)。

    如果你在运行应用程序时遇到任何错误,你可以使用 docker logs 命令,查看日志和调试。

部署 Heroku

我使用Heroku作为主机,因为他们有一个很好的免费层,用于非商业应用程序。  

下载这个  Heroku CLI 然后登录你的Heroku帐号: heroku login

  • 登录到容器注册表:heroku container:login

  • 进入你的应用工作目录,并推送Docker的镜像:  heroku container:release web --app [YOUR APP NAME]

  • 完成了!您已经准备好分享您的实时机器学习web应用程序。

    希望这对你开始有帮助。请随意在评论中发布您自己的ML应用程序的链接——如果能看到它们就太好了。

  • 最终部署的web应用

更多深度学习竞赛项目,大家可移步官网进行查看和参赛!

更多精彩内容请访问FlyAI-AI竞赛服务平台;为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台;每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。

挑战者,都在FlyAI!!!

 
Flask 结合 pandas.DataFrame 输出文件(excel/csv) Flask 是使用 Python 编写的一个轻量级web框架,使用 Flask 可以快速的搭建起一个网站,轻量级体现在框架提供了基础的应用框架(定义app、templates、Field等),其余目的的可以使用外部包达成。 pandas是基于 Numpy 的一种工具,该工具是为了解决数据分析而创建的,在 Numpy 的快速计算基础上增加了行和列名,可以读取文件、数据库数据并进行交互,**pandas.DataFrame** 是 pandas 中的一种表型数据结构。 阅读详情

相关推荐

从零使用强化学习训练AI玩儿游戏(1)——安装环境

            本文目前主要是写给自己的一个笔记,接下来这段时间会逐步记录我是怎么通过学习使用TensorFlow+Keras训练神经网络自己玩儿游戏,如果能间接帮助到他人就最好不过了,不喜勿喷。 目前准备使用第一层卷积神经网络,第二层LSTM的方式通过DQN增强学习的方式来训练这个神经网络。 我是在Windows7上运行的,做完了会把代码放到GitHub上 资源:IDE:PyCha...

蛋烘糕的博客 1万+

python:pandas+echarts+flask框架数据可视化

文章目录前言步骤1.需要使用的库2.完整代码 前言 数据可视化,做成动态图 echarts官网:这里面有很多做好了动态图模板 具体实施:用flask框架,用pandas库读取准备好的表格数据,将这个数据传入到动态图中,就可以了。 成品如下图: 步骤 1.需要使用的库 from flask import Flask,render_template import pandas as pd 安装pandas:pip install pandas 安装flask:pip install flask 2.

weixin_49572581的博客 6208

AI工程部署(一):Docker微服务【标准工作流:①构建阶段(编写Dockerfile,构建镜像; 将镜像push到dockerhub);②部署阶段(从dockerhub上pull镜像; run)】

一、构建镜像 1、编写Dockerfile # 声明基础镜像版本,选择pytorch官方镜像 FROM pytorch/pytorch:1.3-cuda10.1-cudnn7-runtime # 声明维护者 MAINTAINER old-wei <old-wei@gmail.com> # 首先拷贝requirements.txt进docker COPY ./requirements.txt /requirements.txt # 安装python依赖(如果安装较慢,请更换国内pip源:-i

u013250861的博客 1550

基于Docker部署的Flask人工智能模型微服务

基于Flask的人工智能模型微服务基于Flask的人工智能模型微服务基于Flask的人工智能模型微服务

Major_S的博客 1167

Docker运行AI应用&传输镜像

🧡测试人脸检测模型🧡离线传输🧡在线推送🧡其他机器拉取

qq_41847894的博客 1087

在Linux服务器上部署BERT预训练模型——展示了如何在Linux服务器上使用Docker容器部署BERT预

自然语言处理(NLP)技术一直以来都是非常热门的研究领域。深度学习(DL)也逐渐成为NLP的重要组成部分,并且BERT预训练模型已经成为事实上的标准模型。因此,了解BERT预训练模型及其部署至生产环境是一个必不可少的技能。本文将以BERT预训练模型的部署方式来介绍如何在Linux服务器上使用Docker容器部署BERT预训练模型。

AI天才研究院 2707

flask + Pandas + echarts 使用饼状图等将二手房数据进行分析+可视化

flask + Pandas + echarts 使用饼状图等将二手房数据进行分析+可视化

菜鸟实战的博客 2918

Keras深度学习实战——使用深度Q学习进行SpaceInvaders游戏

本教程将介绍如何使用Keras深度学习框架来构建一个深度Q学习模型,并用它来训练一个能够玩SpaceInvaders游戏的智能代理。SpaceInvaders是一款经典的街机游戏,玩家需要控制一架飞船躲避外星人的攻击,并消灭它们。游戏状态可以用一组帧画面来表示,每个帧画面包含游戏画面信息和玩家操作信息。深度Q学习是一种强化学习算法,它可以通过学习将状态映射到动作来控制智能代理的行为。深度Q学习是一种强大的强化学习算法,它可以用于解决各种复杂问题。

走向CTO的路上... 182

Docker AIGC等大模型深度学习环境搭建(完整详细版)

本文是《》(https://blog.youkuaiyun.com/suiyingy/article/details/130169592)专栏的一部分,所述方法和步骤基本上是通用的,不局限于AIGC大模型深度学习环境。ChatGPT、Stable Diffusion等大模型属于相对较新的模型,所以依赖的Pytorch经常为torch1.12以上版本。相应的CUDA版本则至少为CUDA 11.3,并且显卡驱动对应的CUDA版本号不能小于CUDA库的版本号。下面将以CUDA 11.8驱动安装为例。

叶子的博客 8719

AI 算法加密与Docker 镜像部署

Docker 是一种容器化平台,允许开发人员将应用程序及其所有依赖项打包到一个独立的容器中。这个容器可以在任何支持 Docker 的环境中运行,确保了应用程序在不同环境中具有相同的行为。

EncodingLee的博客 1604

Python基于 Flask、Echarts、Pandas 等实现的图书分析大屏展示系统源码.zip

项目亮点 采用 pandas、numpy 进行数据分析 基于 snownlp、jieba 进行情感分析 后端接口选用 RESTful 风格,构建 Swagger 文档 基于 Flask、Echarts 构建 Web 服务,采取前后端分离的开发模式 结合 redis 提高访问速度 采用 docker-compose 构建项目 使用 gitee、github 进行代码版本管理 前端采用 Promise、async、await 进行异步请求 展示地址 主页:https://python.sinwer.cn/ 数据接口:https://python.sinwer.cn/v1/

Python+Flask+Pandas怎样实现任意时间范围的对比数据报表

实现思路:1)获取指定时间范围内的数据:2)df合并。2.因为是低代码的,只能发重要有用的代码片段了。

阿桂天山的技术栈 536

5分钟搞定mmdetection3d多模态推理可视化:从KITTI数据集到3D检测结果展示

本文提供了一份快速上手MMDetection3D进行多模态推理可视化的实战指南。文章详细介绍了从环境搭建、KITTI数据集准备,到模型选择、配置解析,再到执行多模态推理并生成3D检测结果可视化的完整流程,旨在帮助开发者在30分钟内快速验证模型并直观展示检测效果。

weixin_29051149的博客 250

[Vscode]Pandas连接数据库/使用Flask+echarts数据可视化

/ 将ajax封装到函数中执行。

ht15177518806的博客 3651

2.4G/4G天线共存方案:Air8101多频段隔离设计实战(附波长计算表)

本文深入探讨了物联网设备中Wi-Fi 2.4GHz与4G LTE天线共存设计的实战方案。针对B40与2.4G频段紧邻带来的干扰挑战,文章系统性地提出了空间隔离、PCB布局优化、结构设计三重防线,并提供了关键的波长计算工具与系统级验证Checklist,旨在帮助工程师将多频段隔离设计从“玄学”变为可执行的工程规范。

weixin_29197051的博客 389

开源光标主题实战:从Moshi Monsters到自定义指针的完整指南

光标主题是操作系统个性化的重要组成部分,它通过替换系统默认指针图标来改变视觉交互体验。其原理在于操作系统允许用户自定义指针资源文件,这些文件定义了不同状态下的光标图像。从技术价值看,一套设计良好的光标主题不仅能提升桌面美观度,还能增强用户的情感连接和操作愉悦感,是低成本高回报的数字幸福感提升方案。在应用场景上,无论是开发者、设计师还是普通用户,都可以通过更换光标主题来个性化工作环境。本文以热门的Moshi Monsters开源光标项目为例,深入解析了光标主题的设计逻辑、系统适配方案以及二次创作方法,涵盖了W

weixin_30879833的博客 564

Flask与Pandas:数据可视化Web应用

本文聚焦于利用Flask和Pandas构建数据可视化Web应用。Flask作为轻量级Web框架,Pandas作为强大的数据处理库,二者结合能够高效地实现数据处理与可视化展示。首先介绍Flask和Pandas的基本概念、发展历程及相关术语,接着阐述构建数据可视化Web应用的理论基础和架构设计,包括系统分解、组件交互等。然后说明实现机制,如算法复杂度分析和代码优化。在实际应用部分,给出实施策略、集成方法和部署考量。最后探讨高级考量因素和跨领域应用等内容,为开发者提供全面的技术指导和可行的实践建议。

AI Python 编程之道的博客 1273

谷粒商城 - 个人笔记(集群部署篇一)

电商后台管理系统+电商系统,掌握微服务的全套方案。该系统有商品服务、仓储服务、订单服务、购物车服务、检索服务、认证中心服务、网关服务、用户服务、秒杀服务、第三方服务。使用SpringBoot+SpringCloud并配套SpringCloud Alibaba系列,引入全套微服务治理方案:Nacos注册中心/配置中心、Feign远程调用、Gateway网关、Redisson缓存、基于ElasticSearch7全文检索、异步编排与线程池、RabbitMQ柔性事务方案、Redisson分布式锁、分布式信号量等。

知行 4008

全栈式报表统计:Flask+Pandas获取各类起止日期

呕心之作,干货满满,相信对你绝对有价值。

阿桂天山的技术栈 767

PSIM+PIL+CCS三剑客:手把手教你搞定DSP28335的软硬件联合调试

本文详细介绍了如何利用PSIM、PIL与CCS三款工具,实现DSP28335的软硬件联合调试。通过搭建兼容环境、从PSIM仿真生成PIL代码,再到实战联合调试与问题诊断,手把手指导开发者构建从虚拟模型到实际硬件的完整验证闭环,有效提升电力电子与电机驱动等领域的开发效率与可靠性。

weixin_29183637的博客 186

STM32F4串口接收ATGM336H GPS数据,手把手教你解析NMEA协议并转换经纬度格式

本文详细介绍了如何使用STM32F4开发板通过串口接收ATGM336H GPS模块的NMEA协议数据,并解析GNRMC语句获取经纬度信息。内容涵盖硬件连接、NMEA协议深度解析、数据校验实现以及经纬度格式转换的数学原理与代码实现,为嵌入式开发者提供完整的GPS数据处理解决方案。

weixin_42522575的博客 497

Keras使用GPU训练

TensorFlow、Keras与GPU之间的版本对应 版本问题—keras和tensorflow的版本对应关系 tensorflow各个版本与cuda版本的对应关系~最新 环境部署中cuda对应的tensorflow-gpu、keras版本、pytorch的对应版本 使用GPU训练Keras模型 Keras——检查GPU是否可用 如何使用GPU训练keras模型 ...

qq_41982466的博客 1万+

TEC 高精度控温算法:实现精准升降温与恒温控制

本文深入解析了TEC高精度控温算法的核心原理与工程实践。针对TEC非线性、时变的特性,算法通过智能状态机实现精准升降温与恒温控制,并详细阐述了参数整定、硬件协同及调试优化的系统性方法,为半导体激光器、PCR仪等高精度温控应用提供了一套完整的解决方案。

weixin_29212867的博客 1013

Pandas和Flask配合实现快速在网页上展示表格数据(二十八)

代码展示 (1)main.py代码 from flask import Flask, render_template from goods import app_goods from cart import app_cart #循环引用,解决方法,推迟一方的导入,让例外一方完成 app = Flask(__name__) #注册蓝图(注册goods模块下的蓝图对象,就可以访问相应的路径) app.register_blueprint(app_goods, url_prefix="/goods_rout

小龙龙品牌的博客 5408

slew dreate,slew threshold与transition计算

​只看rise情况下,from pin取slew threshold10%-90%的区间,slew derate为1,计算得到transition为1.002e-10,to pin的slew threshold 为30%-70%,slew derate 0.5,从波形列表上取相近的值3.75e-10和8.75e-10,计算得到transition为(8.75e-10-3.75e-10)/0.5=1e-9,考虑精度和取值区间问题,基本符合工具计算的值,如下:​。如下示例,在.lib库中有定义以下内容。

m0_61544122的博客 794

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

10行代码实现的接口平台:基于pandas和Flask

10行代码实现的接口平台:基于pandas和Flask 初衷 基于python数据分析人员都非常熟悉pandas库,pandas库利用read_sql_query方法可以方便的从数据库中查询数据,也可以方便的把数据转换为json格式。 在有些场景下,比如data_v需要以接口作为后端,那么有没有一个简易的方法将dataframe快速的输出为接口呢? 利用Flask可以实现。 环境 linux操作系...

Martin Bowman的专栏 1600

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: 一文搞懂 PyTorch 内部机制
下一篇: Transformer家族简史(PART I)
iFlyAI
博客等级 码龄9年 238粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值