Spaces:
Running
Running
import gradio as gr | |
import pandas as pd | |
import numpy as np | |
import pickle | |
from joblib import load | |
trees = load('randomFlorest.joblib') | |
def convert(options, input): | |
for i in range(0, len(options)): | |
if options[i] == input: | |
return i | |
def predict(age, sex, chestPainType, restingBP, cholesterol, fastingBS, restingECG, maxHR, exerciseAngina, oldpeak, stSlope): | |
convertSex = convert(["F", "M"], sex) | |
convertCPT = convert(['ASY', 'ATA', 'NAP', 'TA'], chestPainType) | |
convertRECG = convert(['LVH', 'Normal', 'ST'], restingECG) | |
convertEA = convert(["N", "Y"],exerciseAngina) | |
convertSTS = convert(['Down', 'Flat', 'Up'], stSlope) | |
data = [[int(convertSex), int(convertCPT), int(convertRECG), int(convertEA), int(convertSTS), int(age), int(restingBP), int(cholesterol), int(fastingBS), int(maxHR), np.float32(oldpeak)]] | |
columns_df = columns_df = ['Sex', 'ChestPainType', 'RestingECG', 'ExerciseAngina', 'ST_Slope', 'Age', 'RestingBP', 'Cholesterol', 'FastingBS', 'MaxHR', 'Oldpeak'] | |
df_row = pd.DataFrame(data,columns=columns_df) | |
predictions = [tree.predict(df_row) for tree in trees] | |
avg_probs = np.stack(predictions).mean(0) | |
return f"A probabilidade do paciente ter doença cardíca é de: {avg_probs[0]*100:.2f}%" | |
example = [ | |
[40, 'M', 'ATA', 140, 289, 0, 'Normal', 172, 'N', 0.0, 'Up'], | |
[49, 'F', 'NAP', 160, 180, 0, 'Normal', 156, 'N', 1.0, 'Flat'], | |
[50, 'M', 'ASY', 140, 341, 0, 'ST', 125, 'Y', 1.8, 'Flat'], | |
[53, 'M', 'NAP', 145, 518, 0, 'Normal', 125, 'N', 0.0, 'Flat'] | |
] | |
gr.Interface( | |
fn=predict, | |
title="Heart Failure predict Model", | |
allow_flagging="never", | |
share=True, | |
inputs=[ | |
gr.inputs.Number(default=30, label="Age"), | |
gr.inputs.Radio(choices=["F", "M"], default="M", label="Sex"), | |
gr.Dropdown(['ASY', 'ATA', 'NAP', 'TA'], label="Chest Pain Type", default="ASY"), | |
gr.inputs.Number(default=120, label="Resting Blood Pressure"), | |
gr.inputs.Number(default=0, label="Cholesterol"), | |
gr.Dropdown([0, 1], default=0, label="Fasting Blood Sugar"), | |
gr.Dropdown(['LVH', 'Normal', 'ST'], default="Normal", label="Resting ECG"), | |
gr.inputs.Number(default=150, label="maximum heart rate"), | |
gr.inputs.Radio(choices=["N", "Y"], default="No", label="ExerciseAngina"), | |
gr.inputs.Number(default=0.0, label="Old peak"), | |
gr.Dropdown(['Down', 'Flat', 'Up'],default="Flat", label="ST Slope"), | |
], | |
examples=example, | |
outputs="text").launch() |