超高效,用FastAPI为机器学习系统提供数据(下)

FastAPI:服务于机器学习数据产品的API框架

微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩

自定义错误处理

构建数据产品需要许多不同的团队一起工作;例如数据科学、机器学习、软件工程等。在这种跨职能协作中,错误处理和消息传递的一致性变得至关重要。FastAPI 支持使用消息和状态代码进行自定义错误处理。

from fastapi import FastAPI, HTTPException
import uvicorn

app = FastAPI()

cities = {1: "Berlin", 2: "Hamburg", 3: "München"}


@app.get("/cities/{city_id}")
async def read_city_id(city_id: int):

    if city_id not in cities:
        raise HTTPException(status_code=404, detail="City id is not found") # status code and error message is defined

    results = {"city": cities[city_id]}
    return results


if __name__ == "__main__":
    uvicorn.run("error-message:app")

OpenAPI 标准自动文档生成

FastAPI 支持开发人员在浏览器中自动生成交互式且易于测试的端点。通过下面的链接,您将被定向到您生成的路线。

http://localhost:8000/docs 

当您单击蓝色面板上的箭头时,您将获得更多详细信息。

该文档允许用户测试创建的端点。您只需单击“试用”按钮即可。

为了测试数字验证,我将 0 传递给订单计数,API 自动返回错误消息和 422 状态。

使用 FastAPI 服务的机器学习模型

当我们学习了 FastAPI 的基础知识后,我们就可以使用它来为我们的机器学习模型提供服务了。

在这个例子中,我使用二手车数据集来预测汽车的价值。该数据集包含有关汽车的特征,从品牌到汽车行驶了多少公里。为了简化示例,我不会共享数据清理、数据准备和模型构建步骤,而是将所有内容都放在一个 pickle 文件中。

Python 代码加载 pickle 文件,创建预测端点,并返回汽车的预测价格。

from fastapi import FastAPI
import joblib
import numpy as np
import pandas as pd
import uvicorn

# passing title, version and description parameters to the class object
app = FastAPI(
    title="Car Price Prediction",
    version="1.0",
    description="Model type: Linear Regression",
)

# loading previously saved pickle file
model = joblib.load("./LinearRegressionModel.pkl")

# creating predict end point
@app.get("/api/predict")
async def predict(
    name: str, company: str, year: int, kms_driven: float, fuel_type: str
):
    result = model.predict(
        pd.DataFrame(
            columns=["name", "company", "year", "kms_driven", "fuel_type"],
            data=np.array([name, company, year, kms_driven, fuel_type]).reshape(1, 5),
        )
    )[0]
    return result


if __name__ == "__main__":
    uvicorn.run("main:app", host="127.0.0.1", port=8000, reload=True)

当我们将参数传递给预测端点时,它会在响应主体中返回汽车预测。下次你甚至可以将它 dockerize 并用一个漂亮的 web 应用程序来服务它!

结论

FastAPI 已经成为数据领域 API 服务的首选框架。每天我都会阅读另一篇关于数据团队迁移到 FastAPI 以及他们从这种变化中受益的文章。我期待在接下来的几个月和几年中看到更多更新。

感谢阅读。

推荐书单

《图解数据智能》

《图解数据智能》是一本为数字资源的对接方、分配方以及广大的入门学习者提供相关数据智能概念的科普读物。书中各个概念之间相对独立,读者可以将其作为一本检索用的工具书籍,也可以根据自己的兴趣灵活查阅相关篇章。

无论你是数智化领域的专业从业人员,还是刚刚毕业想要进入该领域的技术小白,抑或是正面临着数字化转型的政府或企业人员,或者是千千万万个生活在这个数智化社会中的普通人,都可以阅读此书,你将从酣畅淋漓的技术释疑和轻松有趣的漫画解读中,找到自己的答案。

《图解数据智能》(张燕玲,许正军,张军)【摘要 书评 试读】- 京东图书京东JD.COM图书频道为您提供《图解数据智能》在线选购,本书作者:,出版社:清华大学出版社。买图书,到京东。网购图书,享受最低优惠折扣!icon-default.png?t=N4P3https://item.jd.com/13368169.html

 

精彩回顾

《Pandas1.x实例精解》新书抢先看!

【第1篇】利用Pandas操作DataFrame的列与行

【第2篇】Pandas如何对DataFrame排序和统计

【第3篇】Pandas如何使用DataFrame方法链

【第4篇】Pandas如何比较缺失值以及转置方向?

【第5篇】DataFrame如何玩转多样性数据

【第6篇】如何进行探索性数据分析?

【第7篇】使用Pandas处理分类数据

【第8篇】使用Pandas处理连续数据

【第9篇】使用Pandas比较连续值和连续列

【第10篇】如何比较分类值以及使用Pandas分析库

微信搜索关注《Python学研大本营》

访问【IT今日热榜】,发现每日技术热点

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值