如何在FastAPI中使用机器学习模型进行数据预测

1. FastAPI简介

FastAPI 是一个现代、快速的 (高性能) Web 框架,用于构建 APIs。

与 NodeJS、Django 和 Flask 等框架不同,FastAPI 借助 Python 类型注解获得效率。Python 的类型提示可以消除运行时错误并增强 IDE 支持(code completion 等)。

FastAPI 非常快 (具有 Rust 的速度),并提供了自动化的 API 文档(基于 JSON Schema)。

2. 机器学习模型预测

2.1. 数据预处理

数据是机器学习模型的基础,可以根据实际需求,对数据进行清洗、切分、归一化等操作,为模型的输入提供满足条件的数据。

import pandas as pd

data = pd.read_csv('data.csv')

# 数据清洗

data = data.dropna(how='any', axis=0)

# 数据切分

train_data = data.iloc[:,:-1]

train_label = data.iloc[:, -1]

2.2. 模型训练

对数据预处理后,可以开始训练模型,以决策树模型为例:

from sklearn.tree import DecisionTreeClassifier

from sklearn.model_selection import train_test_split

# 数据切分

X_train, X_test, y_train, y_test = train_test_split(train_data, train_label, test_size=0.25)

# 训练模型

model = DecisionTreeClassifier()

model.fit(X_train, y_train)

2.3. 模型预测

模型训练好后,可以使用模型预测数据,决策树模型为例:

# 数据预测

result = model.predict(X_test)

# 预测结果与真实结果的比对

print((result == y_test).sum() / result.shape[0])

3. 在FastAPI中使用机器学习模型进行数据预测

3.1. 安装依赖包

使用 FastAPI 进行部署的时候,需要安装 Requests、Pandas 和 Scikit-Learn 等 Python 库。

pip install -U fastapi

pip install -U uvicorn[standard]

pip install requests

pip install pandas

pip install scikit-learn

3.2. 编写接口

编写接口,以决策树模型为例,在 FastAPI 中接受输入,将输入传入模型进行预测,将预测结果返回。

from fastapi import FastAPI

from pydantic import BaseModel

class Item(BaseModel):

x1: float

x2: float

x3: float

x4: float

app = FastAPI()

@app.post("/predict")

async def predict(item: Item):

data = {

'x1': [item.x1],

'x2': [item.x2],

'x3': [item.x3],

'x4': [item.x4]

}

data = pd.DataFrame(data)

# 预测

result = model.predict(data)

return {

'result': int(result[0])

}

3.3. 启动服务

启动服务,使用 HTTP 协议端口为8000,可以通过如下代码启动服务:

if __name__ == '__main__':

uvicorn.run(app, host="127.0.0.1", port=8000)

3.4. 使用 API 进行预测

使用 POST 请求,将数据发送给接口进行预测:

import requests

import json

url = 'http://127.0.0.1:8000/predict'

data = {

'x1': 4.2,

'x2': 3.1,

'x3': 1.5,

'x4': 0.2

}

response = requests.post(url, data=json.dumps(data))

print(response.json()['result'])

总结:FastAPI 是一款高性能的 Python Web 端框架,可以使用 FastAPI 进行机器学习模型的预测,提高模型的实时性。FastAPI 主要适用于项目需要高并发、低延迟的 API 端场景,因此需要在不降低性能的情况下提供良好的可维护性和可扩展性。

后端开发标签