|
|
|
|
|
|
|
|
from fastapi import FastAPI |
|
|
from fastapi.responses import RedirectResponse |
|
|
from pydantic import BaseModel |
|
|
import joblib |
|
|
import pandas as pd |
|
|
|
|
|
app = FastAPI() |
|
|
model = joblib.load("./pipeline.joblib") |
|
|
|
|
|
class Input(BaseModel): |
|
|
CUST_NBR: str |
|
|
MENU_TYP_DESC: str |
|
|
PYR_SEG_CD: str |
|
|
DIV_NBR: str |
|
|
WKLY_ORDERS: float |
|
|
PERC_EB: float |
|
|
AVG_WKLY_SALES: float |
|
|
AVG_WKLY_CASES: float |
|
|
|
|
|
class Output(BaseModel): |
|
|
prediction: list[int] |
|
|
|
|
|
@app.post("/predict", response_model=Output) |
|
|
def predict(data: list[Input]) -> Output: |
|
|
print(data) |
|
|
data = [item.model_dump() for item in data] |
|
|
data = pd.DataFrame(data) |
|
|
prediction = model.predict(data).tolist() |
|
|
return {"prediction":prediction} |
|
|
|
|
|
@app.get("/") |
|
|
def home(): |
|
|
return RedirectResponse(url="/docs", status_code=302) |