【发布时间】:2023-02-13 14:40:18
【问题描述】:
我将 Pydantic 模型 (Basemodel) 与 FastAPI 一起使用,并将输入转换为 dictionary,然后将其转换为 Pandas DataFrame 以将其传递给 model.predict() 函数以进行机器学习预测,如下所示:
from fastapi import FastAPI
import uvicorn
from pydantic import BaseModel
import pandas as pd
from typing import List
class Inputs(BaseModel):
f1: float,
f2: float,
f3: str
@app.post('/predict')
def predict(features: List[Inputs]):
output = []
# loop the list of input features
for data in features:
result = {}
# Convert data into dict() and then into a DataFrame
data = data.dict()
df = pd.DataFrame([data])
# get predictions
prediction = classifier.predict(df)[0]
# get probability
probability = classifier.predict_proba(df).max()
# assign to dictionary
result["prediction"] = prediction
result["probability"] = probability
# append dictionary to list (many outputs)
output.append(result)
return output
它工作正常,我只是不太确定它是否优化或正确的方法,因为我将输入转换两次以获得预测。另外,我不确定它是否会起作用快速地在有一个的情况下数量巨大输入。这方面有什么改进吗?如果有办法(甚至除了使用 Pydantic 模型之外),我可以直接工作并避免进行转换和循环。
【问题讨论】:
标签: python machine-learning fastapi prediction pydantic