Queensly's picture
Update main.py
35a2edb verified
from fastapi import FastAPI
import pickle
import uvicorn
import pandas as pd
app = FastAPI()
# @app.get("/")
# def read_root():
# return {"Hello": "World!"}
# Function to load pickle file
def load_pickle(filename):
with open(filename, 'rb') as file:
data = pickle.load(file)
return data
# Load pickle file
ml_components = load_pickle('ml_sepsis.pkl')
# Components in the pickle file
ml_model = ml_components['model']
pipeline_processing = ml_components['pipeline']
#Endpoints
#Root endpoints
@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