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) | |