|
from fastapi import FastAPI |
|
import pickle |
|
import uvicorn |
|
import pandas as pd |
|
|
|
app = FastAPI() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def load_pickle(filename): |
|
with open(filename, 'rb') as file: |
|
data = pickle.load(file) |
|
return data |
|
|
|
|
|
ml_components = load_pickle('ml_sepsis.pkl') |
|
|
|
|
|
ml_model = ml_components['model'] |
|
pipeline_processing = ml_components['pipeline'] |
|
|
|
|
|
|
|
@app.get("/") |
|
def root(): |
|
return {"API": "An API for Sepsis Prediction."} |
|
|
|
@app.get('/Predict_Sepsis') |
|
async def predict(Plasma_glucose: int, Blood_Work_Result_1: int, |
|
Blood_Pressure: int, Blood_Work_Result_2: int, |
|
Blood_Work_Result_3: int, Body_mass_index: float, |
|
Blood_Work_Result_4: float,Age: int, Insurance:float): |
|
|
|
data = pd.DataFrame({'Plasma glucose': [Plasma_glucose], 'Blood Work Result-1': [Blood_Work_Result_1], |
|
'Blood Pressure': [Blood_Pressure], 'Blood Work Result-2': [Blood_Work_Result_2], |
|
'Blood Work Result-3': [Blood_Work_Result_3], 'Body mass index': [Body_mass_index], |
|
'Blood Work Result-4': [Blood_Work_Result_4], 'Age': [Age], 'Insurance':[Insurance]}) |
|
|
|
data_prepared = pipeline_processing.transform(data) |
|
|
|
model_output = ml_model.predict(data_prepared).tolist() |
|
|
|
prediction = make_prediction(model_output) |
|
|
|
return prediction |
|
|
|
|
|
|
|
|
|
def make_prediction(data_prepared): |
|
|
|
output_pred = data_prepared |
|
|
|
if output_pred == 0: |
|
output_pred = "Sepsis status is Negative" |
|
else: |
|
output_pred = "Sepsis status is Positive" |
|
|
|
return output_pred |