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