demo-stroke / app.py
Debmalya's picture
.
8ff934a
raw
history blame
2.57 kB
import gradio as gr
import pycaret
from pycaret.classification import *
import pandas as pd
healthcare_stroke_data = pd.read_csv("healthcare-dataset-stroke-data.csv")
modelvalue= setup(data = healthcare_stroke_data, target = 'stroke', normalize = True, normalize_method = 'zscore', transformation=True, fix_imbalance = True, session_id=123, fold = 60, remove_outliers= True, outliers_threshold = 0.05, remove_multicollinearity=True, multicollinearity_threshold = 0.9)
best = compare_models(sort = 'AUC', n_select = 15)
compare_model_results = pull()
def predict(model, gender, age, hypertension, heart_disease, ever_married, work_type, Residence_type, avg_glucose_level, bmi, smoking_status):
df = pd.DataFrame.from_dict({'gender': [gender], 'age': [age], 'hypertension': [hypertension], 'heart_disease':[heart_disease], 'ever_married':[ever_married],
'work_type': [work_type], 'Residence_type': [Residence_type], 'avg_glucose_level': [avg_glucose_level], 'bmi':[bmi],'smoking_status':[smoking_status]})
model_index = list(compare_model_results['Model']).index(model)
model = best[model_index]
pred = predict_model(model, df, raw_score=True)
return {'Yes': pred['Score_Yes'][0].astype('float64'),
'No': pred['Score_No'][0].astype('float64' )}
model = gr.inputs.Dropdown(list(compare_model_results['Model']),label="Model")
gender = gr.inputs.Dropdown(choices=["Male", "Female"],label = 'gender')
age = gr.inputs.Slider(minimum=1, maximum=100, default=data['age'].mean(), label = 'age')
hypertension = gr.inputs.Dropdown(choices=["1", "0"],label = 'hypertension')
heart_disease = gr.inputs.Dropdown(choices=["1", "0"],label ='heart_disease')
ever_married = gr.inputs.Dropdown(choices=["Yes", "No"], label ='ever_married')
work_type = gr.inputs.Dropdown(choices=["children", "Govt_job","Never_worked","Private","Self-employed"],label = 'work_type')
Residence_type = gr.inputs.Dropdown(choices=["Urban", "Rural"],label = 'Residence_type')
avg_glucose_level = gr.inputs.Slider(minimum=-55, maximum=300, default=data['avg_glucose_level'].mean(), label = 'avg_glucose_level')
bmi = gr.inputs.Slider(minimum=-10, maximum=100, default=data['bmi'].mean(), label = 'bmi')
smoking_status = gr.inputs.Dropdown(choices=["Unknown", "smokes","never_smoked", "formerly_smoked"], label ='smoking_status')
gr.Interface(predict,[model, gender, age, hypertension, heart_disease, ever_married, work_type, Residence_type, avg_glucose_level, bmi, smoking_status], "label",live=True).launch()