CoolFace
Apppublic

petermutwiri/Sepsis_API

sourceHugging Facemitupdated 3y agoView on Hugging Face
0likes
main.py65 linesDownload Raw Back to root
1from fastapi.responses import RedirectResponse2from fastapi import FastAPI, Request, HTTPException, APIRouter, Depends3from fastapi.openapi.docs import get_swagger_ui_html4from fastapi import FastAPI5from pydantic import BaseModel6import joblib7import pandas as pd8import numpy as np9from sklearn.preprocessing import StandardScaler10from sklearn.impute import SimpleImputer11from sklearn.compose import ColumnTransformer12from sklearn.pipeline import Pipeline13from sklearn.linear_model import LogisticRegression14 15app = FastAPI()16 17# Load the entire pipeline18pipeline_filepath = "pipeline.joblib"19pipeline = joblib.load(pipeline_filepath)20 21class PatientData(BaseModel):22    Plasma_glucose : float23    Blood_Work_Result_1: float24    Blood_Pressure : float25    Blood_Work_Result_2 : float26    Blood_Work_Result_3 : float27    Body_mass_index  : float28    Blood_Work_Result_4: float29    Age: float30    Insurance: int31 32    33@app.get("/")34async def root():35    return RedirectResponse(url="/docs")36    37    #swagger ui38@app.get("/docs")39async def get_swagger_ui_html():40    return get_swagger_ui_html(openapi_url="/openapi.json", title="API docs")41    42@app.post("/predict")43def get_data_from_user(data: PatientData):44    user_input = data.dict()45 46    input_df = pd.DataFrame([user_input])47 48    # Make predictions using the loaded pipeline49    prediction = pipeline.predict(input_df)50    probabilities = pipeline.predict_proba(input_df)51 52    53    probability_of_positive_class = probabilities[0][1]54 55    # Calculate the prediction56    sepsis_status = "Positive" if prediction[0] == 1 else "Negative"57    sepsis_explanation = "A positive prediction suggests that the patient might be exhibiting sepsis symptoms and requires immediate medical attention." if prediction[0] == 1 else "A negative prediction suggests that the patient is not currently exhibiting sepsis symptoms."58 59    result = {60        'predicted_sepsis': sepsis_status,61        'probability': probability_of_positive_class,62        'sepsis_explanation': sepsis_explanation63    }64    return result65