File size: 1,681 Bytes
8c8aea4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
from fastapi import FastAPI
import uvicorn
import json
from pydantic import BaseModel
import joblib
import json
import imblearn
import pandas as pd
from xgboost import XGBClassifier
from fastapi import FastAPI, Query, Request, HTTPException
app = FastAPI()
# loading my best model with joblib
model = joblib.load("./xgb.joblib")
###
@app.get("/")
async def read_root():
return {"message": "Welcome to the Sepsis Prediction using FastAPI"}
def classify(prediction):
if prediction == 0:
return "Patient does not have sepsis"
else:
return "Patient has sepsis"
@app.post("/predict/")
async def predict_sepsis(
request: Request,
prg: float = Query(..., description="Plasma_glucose"),
pl: float = Query(..., description="Blood_Work_R1"),
pr: float = Query(..., description="Blood_Pressure"),
sk: float = Query(..., description="Blood_Work_R2"),
ts: float = Query(..., description="Blood_Work_R3"),
m11: float = Query(..., description="BMI"),
bd2: float = Query(..., description="Blood_Work_R4"),
age: int = Query(..., description="Age")
# ... (other input parameters)
):
input_data = [prg, pl, pr, sk, ts, m11, bd2, age]
input_df = pd.DataFrame([input_data], columns=[
"Plasma_glucose", "Blood_Work_R1", "Blood_Pressure",
"Blood_Work_R2", "Blood_Work_R3",
"BMI", "Blood_Work_R4", "Age"
])
pred = model.predict(input_df)
output = classify(pred[0])
response = {
"prediction": output
}
return response
# Run the app using Uvicorn
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="127.0.0.1", port=7860)
|