课前测验
本文所用数据及源码免费下载
目录
一、内容介绍
二、应用构建
1.构建机器学习Web应用的思考
①思考问题
②几种构建机器学习模型 Web 应用的方法。
2.工具安装
3.数据预处理
①数据加载及查看
②数据处理及特征选择
4.机器学习模型构建
①数据集划分
②调用逻辑回归模型训练多分类模型
5.“腌制”你的模型
6.配置Flask应用
①创建应用文件夹
②构建网页样式style.css文件
③构建Web界面内容index.html文件
④构建Python后端app.py文件
7.运行Flask应用
三、内容总结
🚀挑战
课后测验
一、内容介绍
在本文中,我将使用上世纪UFO目击事件数据集👽👽👽训练机器学习模型,并将其部署为Web应用。 你将学到:
0 如何“腌制”训练有素的模型1 如何在 Flask 应用中使用该机器学习模型
我们继续使用Jupyter notebook来清理数据和训练我们的模型,当然你也可以使用已训练好的模型来直接进入Web模型部署阶段。 在模型部署中,我们需要使用 Flask框架构建一个 Web 应用程序。
二、应用构建 1.构建机器学习Web应用的思考假如你正在一家企业中工作,其中数据科学部门训练了一个机器模型,他们希望你在应用中使用该模型,你该怎么做?
①思考问题知道问题后,你该如何思考?思考什么?
0 它是Web应用程序还是移动应用程序?如果你正在构建移动应用程序或需要在物联网中使用模型,则可以使用TensorFlow Lite并在Android或iOS应用程序中使用该模型。 1 模型部署平台是什么?在云中还是在本地? 2 脱机支持。应用是否必须脱机工作? 3 使用什么技术来训练模型?所选技术可能会影响您需要使用的工具。
②几种构建机器学习模型 Web 应用的方法。我们该用什么方法去构建机器学习Web应用呢?
0 使用 TensorFlow。其框架生态系统提供了使用 TensorFlow 转换用于Web 应用程序的 TensorFlow 模型的功能.js。 1 使用 PyTorch。此库可以选择将模型导出为 ONNX(开放神经网络交换)格式,以便在可以使用 Onnx Runtime的 JavaScript Web应用程序中使用。 2 使用 Lobe.ai 或 Azure 自定义视觉。如果使用 ML SaaS(软件即服务)系统(如 Lobe.ai 或Azure 自定义视觉)来训练模型,则此类软件提供了为许多平台导出模型的方法,包括生成要由联机应用程序在云中查询的定制 API。
对于初学者,我们可以使用Flask框架构建一个完整的 Flask Web 应用程序,该应用程序能够在 Web 浏览器中训练模型。当然这一步也可以在JavaScript环境中使用TensorFlow.js来完成。 由于我们的学习一直基于 Python 的Jupyter notebook,因此我将基于Jupyter notebook逐步讲解构建机器学习Web应用的全流程。
对于此次任务,我们需要安装两个工具:Flask和Pickle,前者是Python的第三方库,后者是标准库。
0 Flask是一个用python语言基于Werkzeug工具箱编写的轻量级web开发框架,它主要面向需求简单,项目周期短的小应用。它提供了使用Python和模板引擎构建网页的Web框架的基本功能。
1 pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。即我们可以将训练好的模型封装到文件中,直接拿来预测使用。
输入以下代码安装flask框架:
pip3 install -i https://mirrors.aliyun.com/pypi/simple/ flask
pickle模块是内置库,无需安装。
3.数据预处理本文中我们使用 NUFORC(国家 UFO 报告中心)收集的 80000 次 UFO 目击事件的数据。这些数据对UFO目击事件有一些有趣的描述,例如:
“一名男子从夜间照射在草地上的一束光中出现, 他跑向德州仪器停车场” “灯光追赶着我们”
数据和配套的ipynb文件我已经上传到资源中,点击链接即可免费下载。
接下来我们对数据进行预处理。
①数据加载及查看导入第三方库,加载并查看数据内容及数据结构:
import pandas as pd #导入pandas库并重命名为pd
import numpy as np #导入numpy库并重命名为np
ufos = pd.read_csv('./data/ufos.csv') #使用pandas库的read_csv函数加载数据
ufos.head()#查看数据的前五行内容
我们可以看到数据中具有UFO目击的时间,经纬度坐标,国家以及时长等。 继续查看数据组织结构:
我们可以看到我们的数据中共有80332行,其中部分列有缺失值。
②数据处理及特征选择方便起见,我们将需要的数据提取至新表,并删去存在缺失值的列。 输入以下代码:
ufos = pd.DataFrame({'Seconds': ufos['duration (seconds)'], 'Country': ufos['country'],'Latitude': ufos['latitude'],'Longitude': ufos['longitude']})
ufos.dropna(inplace=True) #删除缺失值
ufos.Country.unique() #查看国家数据包含的类别
现在,我们通过筛选1-60 秒之间的目击事件来减少我们需要处理的数据量,输入以下代码:
ufos = ufos[(ufos['Seconds'] >= 1) & (ufos['Seconds']
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?