【Python】fastapi框架之Web部署机器学习模型

简介: 【Python】fastapi框架之Web部署机器学习模型

fastapi框架之Web部署机器学习模型


随着机器学习的广泛应用,如何高效的把训练好的机器学习的模型部署在Web端。


效果展示


fastapi之Web部署机器学习模型


安装第三方库


pip install fastapi -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip install sklearn -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip install jinja2 -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip install uvicorn -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip install python-multipart -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple some-package


训练模型


做了个小例子。用numpy随机生成训练集,使用线性回归进行训练,使用pickle库保存model模型。如下图所示

1684134263094.jpg

makeModel.py

import pickle
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
#创建数据
x=np.linspace(0,1,100).reshape(-1,1)
y=[i*np.random.uniform(0.5,0.7) for i in np.linspace(0,1,100)]
y=np.array(y)
model=LinearRegression()
model.fit(x,y)
y_pred=model.predict(x)
plt.plot(x,y)
plt.plot(x,y_pred)
plt.show()
with open('model.pickle', 'wb') as file:
    pickle.dump(model, file)

1684134290542.jpg


app.py

from fastapi import FastAPI,Form,Request
import uvicorn
from fastapi.templating import Jinja2Templates
import pickle
import numpy as np
app = FastAPI()
templates = Jinja2Templates(directory="templates")
@app.get('/')
def index(request: Request):
    return templates.TemplateResponse("index.html",{"request": request,'y':''})
@app.post('/')
def yPred(request: Request,argument=Form(...)):
    argument = argument
    lis = [[argument]]
    lis = np.array(lis).reshape(-1, 1)
    with open('model.pickle', 'rb') as f:
        model=pickle.load(f)
        y_pred=model.predict(lis)
    return templates.TemplateResponse("index.html",{"request": request,'y':{'x':argument,'y_pred':y_pred[0]}})
if __name__ == '__main__':
    uvicorn.run('app:app', port=8000)


index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="/" method="post">
        <input name="argument">
        <button>提交</button>
        {{y}}
    </form>
</body>
</html>

项目完整代码请点击我的云盘

提取码:6a1k

如有任何问题,欢迎在下方留言,谢谢!

相关文章
|
5月前
|
运维 数据可视化 C++
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
2025年热门Web化容器部署工具对比:Portainer与Websoft9。Portainer以轻量可视化管理见长,适合技术团队运维;Websoft9则提供一站式应用部署与容器管理,内置丰富开源模板,降低中小企业部署门槛。两者各有优势,助力企业提升容器化效率。
403 1
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
|
10月前
|
机器学习/深度学习 算法 Python
机器学习特征筛选:向后淘汰法原理与Python实现
向后淘汰法(Backward Elimination)是机器学习中一种重要的特征选择技术,通过系统性地移除对模型贡献较小的特征,以提高模型性能和可解释性。该方法从完整特征集出发,逐步剔除不重要的特征,最终保留最具影响力的变量子集。其优势包括提升模型简洁性和性能,减少过拟合,降低计算复杂度。然而,该方法在高维特征空间中计算成本较高,且可能陷入局部最优解。适用于线性回归、逻辑回归等统计学习模型。
398 7
|
6月前
|
Java 应用服务中间件 Docker
java-web部署模式概述
本文总结了现代 Web 开发中 Spring Boot HTTP 接口服务的常见部署模式,包括 Servlet 与 Reactive 模型、内置与外置容器、物理机 / 容器 / 云环境部署及单体与微服务架构,帮助开发者根据实际场景选择合适的方案。
237 25
|
8月前
|
机器学习/深度学习 人工智能 算法
Scikit-learn:Python机器学习的瑞士军刀
想要快速入门机器学习但被复杂算法吓退?本文详解Scikit-learn如何让您无需深厚数学背景也能构建强大AI模型。从数据预处理到模型评估,从垃圾邮件过滤到信用风险评估,通过实用案例和直观图表,带您掌握这把Python机器学习的'瑞士军刀'。无论您是AI新手还是经验丰富的数据科学家,都能从中获取将理论转化为实际应用的关键技巧。了解Scikit-learn与大语言模型的最新集成方式,抢先掌握机器学习的未来发展方向!
1101 12
Scikit-learn:Python机器学习的瑞士军刀
|
6月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
490 0
|
8月前
|
人工智能 安全 程序员
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
|
11月前
|
机器学习/深度学习 数据可视化 算法
Python与机器学习:使用Scikit-learn进行数据建模
本文介绍如何使用Python和Scikit-learn进行机器学习数据建模。首先,通过鸢尾花数据集演示数据准备、可视化和预处理步骤。接着,构建并评估K近邻(KNN)模型,展示超参数调优方法。最后,比较KNN、随机森林和支持向量机(SVM)等模型的性能,帮助读者掌握基础的机器学习建模技巧,并展望未来结合深度学习框架的发展方向。
Python与机器学习:使用Scikit-learn进行数据建模
|
10月前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
11月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
342 19
|
10月前
|
机器学习/深度学习 数据可视化 算法
Python 高级编程与实战:深入理解数据科学与机器学习
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化和调试技巧。本文将深入探讨 Python 在数据科学和机器学习中的应用,并通过实战项目帮助你掌握这些技术。

相关产品

  • 人工智能平台 PAI