Spaces:
No application file
No application file
File size: 2,340 Bytes
72c9e1e |
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 |
from fastapi import FastAPI
from fastapi.responses import JSONResponse
from pydantic import BaseModel, Field, computed_field
from typing import Literal, Annotated
import pickle
import pandas as pd
import joblib
import traceback
from fastapi.middleware.cors import CORSMiddleware
# Path to your saved pickle file
model_path = "xgb_model_reg.pkl"
# Load the model
model = joblib.load(model_path)
app=FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # In production, use specific domains
allow_methods=["GET", "POST"],
allow_headers=["*"],
)
#pydantic Model to validate data
class UserInput(BaseModel):
age: Annotated[int, Field(gt=0,description='Age of the Patient')]
albumin_gL: Annotated[float, Field(gt=0,description='Quantity of Albumin in gL')]
creat_umol: Annotated[float, Field(gt=0,description='Quantity of Creatnine in umol')]
glucose_mmol: Annotated[float, Field(gt=0,description='Qunatity of Glucose in mmol')]
lncrp:Annotated[float, Field(gt=0,description='Log of Crp')]
lymph: Annotated[float, Field(gt=0,description='lym ph')]
mcv: Annotated[float, Field(gt=0,description='mcv')]
rdw: Annotated[float, Field(gt=0,description='rdw')]
alp: Annotated[float, Field(gt=0,description='alp')]
wbc: Annotated[float, Field(gt=0,description='white blood cell')]
@app.post('/predict')
def predict_premium(data: UserInput):
try:
input_df = pd.DataFrame(
[
{
'age': data.age,
'albumin_gL': data.albumin_gL,
'creat_umol': data.creat_umol,
'glucose_mmol': data.glucose_mmol,
'lncrp': data.lncrp,
'lymph': data.lymph,
'mcv': data.mcv,
'rdw': data.rdw,
'alp': data.alp,
'wbc': data.wbc
}
]
)
prediction_value = float(model.predict(input_df)[0]) # <-- FIXED HERE
return JSONResponse(
status_code=200,
content={"Predicted Biological Age of Patient": prediction_value}
)
except Exception as e:
return JSONResponse(status_code=500, content={"error": str(e)})
|