random-florest / app.py
lucasgbezerra's picture
Update app.py
6fa0cb9
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()