Spaces:
Runtime error
Runtime error
| import numpy as np | |
| import tensorflow as tf | |
| import gradio as gr | |
| from huggingface_hub import from_pretrained_keras | |
| # download the already pushed model | |
| model = from_pretrained_keras("buio/structured-data-classification") | |
| def convert_and_predict(age, sex, cp, trestbps, chol, fbs, restecg, thalach, exang, oldpeak, slope, ca, thal): | |
| # some conversions from the gradio interface are needed | |
| sample_converted = { | |
| "age": age, | |
| "sex": sex, | |
| "cp": cp+1, | |
| "trestbps": trestbps, | |
| "chol": chol, | |
| "fbs": 0 if fbs<=120 else 1, | |
| "restecg": restecg, | |
| "thalach": thalach, | |
| "exang": exang, | |
| "oldpeak": oldpeak, | |
| "slope": slope+1, | |
| "ca": ca, | |
| "thal": thal, | |
| } | |
| input_dict = {name: tf.convert_to_tensor([value]) for name, value in sample_converted.items()} | |
| predictions = model.predict(input_dict) | |
| return f'{predictions[0][0]:.2%}' | |
| inputs = [ | |
| gr.Slider(minimum=1, maximum=120, step=1, label='age', value=60), | |
| gr.Radio(choices=['female','male'], label='sex', type='index',value='male'), | |
| gr.Radio(choices=['typical angina', | |
| 'atypical angina', | |
| 'non-anginal pain', | |
| 'asymptomatic'], | |
| type='index', label=f'chest pain type', value='typical angina'), | |
| gr.Number(label='blood pressure in mmHg', value=145), | |
| gr.Number(label='serum cholestoral in mg/dl', value=233), | |
| gr.Number(label='fasting blood sugar in mg/dl', value=150), | |
| gr.Radio(choices=['normal','T-T wave abnormality','probable or definite left ventricular hypertrophy'], | |
| label='resting ecg', type='index',value='probable or definite left ventricular hypertrophy'), | |
| gr.Number(label='maximum heart rate achieved', value=150), | |
| gr.Radio(choices=['no','yes',], type='index', label='exercise induced angina',value='no'), | |
| gr.Number(label='ST depression induced by exercise relative to rest', value=2.3), | |
| gr.Radio(choices=['psloping','flat','downsloping'], label='slope of the peak exercise ST segment', type='index', value='downsloping'), | |
| gr.Number(minimum=0, maximum=3, label ='number of major vessels (0-3) colored by flourosopy',value=0), | |
| gr.Radio(['normal','fixed','reversable'],label ='thal', value='fixed') | |
| ] | |
| # the app outputs text | |
| output = gr.Textbox(label='Probability of having a heart disease, as evaluated by our model:') | |
| # it's good practice to pass examples, description and a title to guide users | |
| examples = [] | |
| title = "Heart Disease Classification" | |
| description = "Play with the clinical values or select examples below" | |
| examples = [[63, 1, 1, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 'fixed'], | |
| [67, 1, 4, 160, 286, 0, 2, 108, 1, 1.5, 2, 3, 'normal'], | |
| [67, 1, 4, 120, 229, 0, 2, 129, 1, 2.6, 2, 2, 'reversible']] | |
| gr.Interface(convert_and_predict, inputs, output, examples= examples, allow_flagging=False, | |
| title=title, description=description).launch() |