Queensly/FastAPI_in_Docker
1
1from fastapi import FastAPI2import pickle3import uvicorn4import pandas as pd5 6app = FastAPI()7 8# @app.get("/")9# def read_root():10# return {"Hello": "World!"}11 12 13# Function to load pickle file14def load_pickle(filename):15 with open(filename, 'rb') as file:16 data = pickle.load(file)17 return data18 19# Load pickle file20ml_components = load_pickle('ml_sepsis.pkl') 21 22# Components in the pickle file23ml_model = ml_components['model']24pipeline_processing = ml_components['pipeline'] 25 26#Endpoints 27#Root endpoints28@app.get("/")29def root():30 return {"API": "An API for Sepsis Prediction."}31 32@app.get('/Predict_Sepsis')33async def predict(Plasma_glucose: int, Blood_Work_Result_1: int,34 Blood_Pressure: int, Blood_Work_Result_2: int,35 Blood_Work_Result_3: int, Body_mass_index: float, 36 Blood_Work_Result_4: float, Age: int, Insurance: float):37 38 data = pd.DataFrame({'Plasma glucose': [Plasma_glucose], 'Blood Work Result-1': [Blood_Work_Result_1],39 'Blood Pressure': [Blood_Pressure], 'Blood Work Result-2': [Blood_Work_Result_2],40 'Blood Work Result-3': [Blood_Work_Result_3], 'Body mass index': [Body_mass_index],41 'Blood Work Result-4': [Blood_Work_Result_4], 'Age': [Age], 'Insurance':[Insurance]})42 43 data_prepared = pipeline_processing.transform(data)44 45 model_output = ml_model.predict(data_prepared).tolist()46 47 prediction = make_prediction(model_output)48 49 return prediction50 51 52 53 54def make_prediction(data_prepared):55 56 output_pred = data_prepared57 58 if output_pred == 0:59 output_pred = "Sepsis status is Negative"60 else:61 output_pred = "Sepsis status is Positive"62 63 64 return output_pred