santarabantoosoo
modified app.py
6198d18
# import gradio as gr
# import pickle
# import pandas as pd
# import numpy as np
# import lightgbm as lgb
# from autogluon.tabular import TabularPredictor
# loaded_model = pickle.load(open('Autogluon/models/XGBoost_BAG_L1/model.pkl', 'rb'))
# # pred_proba_radio = loaded_model.predict_proba(X_test_radio)
# # pred_proba_radio
# def relapse(age, pathology, B_symptoms):
# X_test_radio = pd.DataFrame.from_dict(
# {
# "Age": [age],
# "pathology_Nodular Sclerosis cHL": [1 if pathology == 'Nodular' else 0],
# "pathology_others": [1 if pathology == 'Others' else 0],
# "B_symptoms_Yes" : [1 if B_symptoms else 0],
# 'radio_Yes': [1]
# }
# )
# X_test_no_radio = pd.DataFrame.from_dict(
# {
# "Age": [age],
# "pathology_Nodular Sclerosis cHL": [1 if pathology == 'Nodular' else 0],
# "pathology_others": [1 if pathology == 'Others' else 0],
# "B_symptoms_Yes" : [1 if B_symptoms else 0],
# 'radio_Yes': [0]
# }
# )
# pred_proba_radio = loaded_model.predict_proba(X_test_radio)
# pred_proba_radio = round(np.ndarray.item(pred_proba_radio),2)
# pred_radio = loaded_model.predict(X_test_radio)
# pred_proba_no_radio = loaded_model.predict_proba(X_test_no_radio)
# pred_proba_no_radio = round(np.ndarray.item(pred_proba_no_radio),2)
# pred_no_radio = loaded_model.predict(X_test_no_radio)
# return {"Radio": pred_proba_radio, "No Radio": pred_proba_no_radio}
# iface = gr.Interface(
# title = 'Should we omit radiotherapy?',
# description = 'This model predicts relapse according to risk factors.',
# fn=relapse,
# inputs= [
# gr.Number(label = 'Age', show_label = True),
# gr.Radio( choices = ['Mixed cellularity', 'Nodular', 'Others'], label = 'Pathology', show_label = True),
# gr.Checkbox(label = 'B_symptoms', show_label = True)],
# outputs = gr.Label(label = 'Has a higher probability of relapse', show_label = True)
# ,live = True,
# interpretation="default",
# )
# iface.launch()
import gradio as gr
import pandas as pd
import numpy as np
from autogluon.tabular import TabularPredictor
predictor_1 = TabularPredictor.load("no_path_PET_1/")
predictor_2 = TabularPredictor.load("no_path_PET_2/")
predictor_3 = TabularPredictor.load("no_path_PET_3/")
predictor_4 = TabularPredictor.load("no_path_PET_4/")
## Import mapping dataset
stage_mapping = pd.read_csv('stage_mapping.csv', index_col = 0)
# stage_mapping
def get_encoding(stage):
return stage_mapping.loc[stage, 'stage_encoded'] # this is the dataframe for mappings that will be created from the training set
def relapse(age_group, stage):
X_test_radio = pd.DataFrame.from_dict(
{
"age_group": ["<=15" if age_group else ">15"],
'radio': ["Yes"],
'stage_encoded' : get_encoding(stage)
}
)
X_test_no_radio = pd.DataFrame.from_dict(
{
"age_group": ["<=15" if age_group else ">15"],
'radio': ["No"],
'stage_encoded' : get_encoding(stage)
}
)
rad_1 = float(round(predictor_1.predict_proba(X_test_radio).iloc[0,1],3))
rad_2 = float(round(predictor_2.predict_proba(X_test_radio).iloc[0,1],3))
rad_3 = float(round(predictor_3.predict_proba(X_test_radio).iloc[0,1],3))
rad_4 = float(round(predictor_4.predict_proba(X_test_radio).iloc[0,1],3))
pred_proba_radio = float(round(np.mean([rad_1, rad_2, rad_3, rad_4]),3))
no_rad1 = float(round(predictor_1.predict_proba(X_test_no_radio).iloc[0,1],3))
no_rad2 = float(round(predictor_2.predict_proba(X_test_no_radio).iloc[0,1],3))
no_rad3 = float(round(predictor_3.predict_proba(X_test_no_radio).iloc[0,1],3))
no_rad4 = float(round(predictor_4.predict_proba(X_test_no_radio).iloc[0,1],3))
pred_proba_no_radio = float(round(np.mean([no_rad1, no_rad2, no_rad3, no_rad4]),3))
return {"Radio": pred_proba_radio, "No Radio": pred_proba_no_radio}
iface = gr.Interface(
title = 'Should we omit radiotherapy?',
description = 'This model predicts relapse according to risk factors.',
fn=relapse,
inputs= [
gr.Checkbox(label = 'Age <= 15', show_label = True),
gr.Dropdown(choices = ['1A', '1B', '2A', '2B', '3A', '3B', '4A', '4B'],
label = 'stage', show_label = True) ]
,outputs = gr.Label(label = 'Has a higher probability of relapse', show_label = True)
,live = True,
interpretation="default",
)
iface.launch()