Spaces:
Runtime error
Runtime error
from fastapi import FastAPI, HTTPException | |
import uvicorn | |
import os | |
import numpy as np | |
import pandas as pd | |
from sklearn.preprocessing import StandardScaler | |
from sklearn.impute import SimpleImputer | |
import joblib | |
app = FastAPI(debug=True) | |
def load_model(): | |
cwd = os.getcwd() | |
destination = os.path.join(cwd, "Assets") | |
imputer_filepath = os.path.join(destination, "numerical_imputer.joblib") | |
scaler_filepath = os.path.join(destination, "scaler.joblib") | |
model_filepath = os.path.join(destination, "Final_01_model.joblib") | |
num_imputer = joblib.load(imputer_filepath) | |
scaler = joblib.load(scaler_filepath) | |
model = joblib.load(model_filepath) | |
return num_imputer, scaler, model | |
numerical_imputer, scaler, model = load_model() | |
async def read_root(): | |
return {"message": "Welcome To The Sepsis Prediction API"} | |
async def predict_sepsis(PRG: float, PL: float, PR: float, SK: float, TS: float, M11: float, BD2: float, Age: float, Insurance: int): | |
sepsis_data = { | |
'PRG': PRG, | |
'PL': PL, | |
'PR': PR, | |
'SK': SK, | |
'TS': TS, | |
'M11': M11, | |
'BD2': BD2, | |
'Age': Age, | |
'Insurance': Insurance | |
} | |
input_data = pd.DataFrame([sepsis_data]) # Create a DataFrame from the dictionary | |
input_imputed = numerical_imputer.transform(input_data) | |
input_scaled = scaler.transform(input_imputed) | |
prediction = model.predict(input_scaled) | |
sepsis_status = "Positive" if prediction == 1 else "Negative" | |
probabilities = model.predict_proba(input_scaled)[0] | |
probability = probabilities[1] if prediction == 1 else probabilities[0] | |
if prediction == 1: | |
status_icon = "β" | |
sepsis_explanation = "Sepsis is a life-threatening condition caused by an infection. A positive prediction suggests that the patient might be exhibiting sepsis symptoms and requires immediate medical attention." | |
else: | |
status_icon = "β" | |
sepsis_explanation = "Sepsis is a life-threatening condition caused by an infection. A negative prediction suggests that the patient is not currently exhibiting sepsis symptoms." | |
statement = f"The patient's sepsis status is {sepsis_status} {status_icon} with a probability of {probability:.2f}. {sepsis_explanation}" | |
user_input_statement = f"Please note this is the user-inputted data: {sepsis_data}" | |
result = { | |
'predicted_sepsis': sepsis_status, | |
'statement': statement, | |
'user_input_statement': user_input_statement, | |
'probability': probability | |
} | |
return result | |
if __name__ == "__main__": | |
uvicorn.run(app, host="0.0.0.0", port=8000, reload=True) | |