Finial_Project / app.py
1ucii's picture
Update app.py
7db8dd1
import gradio as gr
import numpy as np
from sklearn.preprocessing import MinMaxScaler
import pickle
import joblib
# Create a min-max scaler object
scaler = MinMaxScaler()
def predict(Height,Weight,INR,Race,Age,gender,Diabetes,Simvastatin,Amiodarone,VKORC1, ml_model):
age_encoder = joblib.load('my_le_age.joblib')
en_age = age_encoder.transform([Age])[0]
race_encoder = joblib.load('my_le_race.joblib')
en_race = race_encoder.transform([Race])[0]
gen_encoder = joblib.load('my_le_gender.joblib')
en_gen = gen_encoder.transform([gender])[0]
sim_encoder = joblib.load('my_le_sim.joblib')
en_sim = sim_encoder.transform([Simvastatin])[0]
ami_encoder = joblib.load('my_le_ami.joblib')
en_ami = ami_encoder.transform([Amiodarone])[0]
vk_encoder = joblib.load('my_le_vk.joblib')
en_vk = vk_encoder.transform([VKORC1])[0]
input_features=np.array([Height,Weight,INR,en_race,en_age,en_gen,Diabetes,en_sim,en_ami,en_vk]).reshape(1,-1)
norm_features = scaler.fit_transform(input_features)
if(ml_model == 'Linear'):
with open('lrn_model.pkl', 'rb') as file:
lrn_model = pickle.load(file)
res = lrn_model.predict(norm_features)[0]
elif(ml_model == 'SVRegressor'):
with open('svr_model.pkl', 'rb') as file:
lrn_model = pickle.load(file)
res = lrn_model.predict(norm_features)[0]
elif(ml_model == 'Decision Trees Regressor'):
with open('dt_model.pkl', 'rb') as file:
lrn_model = pickle.load(file)
res = lrn_model.predict(norm_features)[0]
elif(ml_model == 'Lasso Regression'):
with open('lasso_model.pkl', 'rb') as file:
lrn_model = pickle.load(file)
res = lrn_model.predict(norm_features)[0]
else:
with open('mlp_model.pkl', 'rb') as file:
lrn_model = pickle.load(file)
res = lrn_model.predict(norm_features)[0]
return res
return en_gen
Height = gr.inputs.Number(label='Height (cm)')
Weight = gr.inputs.Number(label='Weight (kg)')
INR = gr.inputs.Number(label='INR on Reported Therapeutic Dose of Warfarin')
Race = gr.inputs.Dropdown(['African-American','Asian','Black','Black African','Black Caribbean',
'Black or African American','Black other','Caucasian','Chinese',
'Han Chinese','Hispanic','Indian','Intermediate' ,'Japanese', 'Korean',
'Malay', 'Other' ,'Other (Black British)' ,'Other (Hungarian)',
'Other Mixed Race' ,'White' ,'other'], label='Race')
Age = gr.inputs.Dropdown(['10 - 19','20 - 29','30 - 39','40 - 49','50 - 59','60 - 69','70 - 79','80 - 89','90+'],label='Age')
gender = gr.inputs.Dropdown(["male", "female"], label="Gender")
Diabetes = gr.inputs.Number(label='Diabetes')
Simvastatin = gr.inputs.Number(label='Simvastatin (Zocor)')
Amiodarone = gr.inputs.Number(label='Amiodarone (Cordarone)')
VKORC1 = gr.inputs.Dropdown(['A/A','A/G','G/G'], label='VKORC1 genotype: -1639 G>A (3673); chr16:31015190; rs9923231; C/T')
ml_model = gr.inputs.Dropdown(["Linear", "SVRegressor", "Decision Trees Regressor","Lasso Regression", "MLP Neural Network"], label="ML Model")
outputs = [
gr.outputs.Textbox(label="Dose"),
]
# Create interface
interface = gr.Interface(
fn=predict,
inputs=[Height,Weight,INR,Race,Age,gender,Diabetes,Simvastatin,Amiodarone,VKORC1,
ml_model],
outputs=outputs
)
# Launch interface
interface.launch()