import gradio as gr import pandas as pd import pickle import os # Define params names PARAMS_NAME = [ "gender", "age", "hypertension", "heart_disease", "ever_married", "work_type", "Residence_type", "avg_glucose_level", "bmi", "smoking_status" ] # Load model with open("model/model1.pkl", "rb") as f: model = pickle.load(f) import os # Hacking my own protocol os.chmod('model/saved_bins_bmi.pkl', 0o777) with open('model/saved_bins_bmi.pkl', 'rb') as handle: saved_bins_bmi = pickle.load(handle) def predict(*args): answer_dict = {} for i in range(len(PARAMS_NAME)): answer_dict[PARAMS_NAME[i]] = [args[i]] # Crear dataframe single_instance = pd.DataFrame.from_dict(answer_dict) single_instance["bmi"] = pd.cut(single_instance['bmi'], bins=saved_bins_bmi, include_lowest=True) single_instance['bmi'] = single_instance['bmi'].cat.add_categories('null') single_instance_numbers = single_instance for columna in single_instance_numbers: # Verificar si el tipo de dato es "object" if single_instance_numbers[columna].dtype == 'object': # Obtener los valores únicos de la columna valores_unicos = single_instance_numbers[columna].unique() # Crear un diccionario de reemplazo diccionario_reemplazo = {valor: indice for indice, valor in enumerate(valores_unicos)} # Reemplazar los valores en la columna single_instance_numbers[columna] = single_instance_numbers[columna].map(diccionario_reemplazo) dataEnd_ohe = pd.get_dummies(single_instance_numbers).fillna(0) prediction = model.predict(dataEnd_ohe) # Cast numpy.int64 to just a int stroke = int(prediction[0]) # Adaptación respuesta response = stroke if stroke == 1: response = "Keep rockin' babe!" if stroke == 0: response = "This brain will colapse in 3.. 2.. 1.. 🤯 " return response with gr.Blocks() as demo: gr.Markdown( """ # Stroke Prevention 🤯 """ ) with gr.Row(): with gr.Column(): gr.Markdown( """ ## Insert your self data here please 🤓 """ ) gender = gr.Radio( label='Gender', choices=['Male', 'Female'], value='Female', ) age = gr.Slider( label='Age', minimum=35.0, maximum=82.0, step=1, randomize=True ) hypertension = gr.Radio( label='Hypertension', choices=['No', 'Yes'], value='No', ) heart_disease = gr.Radio( label='Heart Disease', choices=['Yes', 'No'], value='No', ) ever_married = gr.Radio( label='Ever Married', choices=['Yes', 'No'], value='Yes', ) work_type = gr.Radio( label='Work Type', choices=['Private', 'Self-employed', 'Govt-job'], value='Private', ) Residence_type = gr.Radio( label='Residence Type', choices=['Urban', 'Rural'], value='Urban', ) avg_glucose_level = gr.Slider( label='Avg Glucose Level', minimum=55.22, maximum=271.74, step=0.1, randomize=True ) bmi = gr.Slider( label='Bmi', minimum=11.3, maximum=42.0, step=0.1, randomize=True ) smoking_status = gr.Dropdown( label='Smoking Status', choices=['formerly smoked', 'never smoked', 'smokes'], multiselect=False, value='never smoked', ) with gr.Column(): gr.Markdown( """ ## Look if your brain is in risk 🧠 """ ) label = gr.Label(label="Brain status") predict_btn = gr.Button(value="Click me please!") predict_btn.click( predict, inputs=[ gender, age, hypertension, heart_disease, ever_married, work_type, Residence_type, avg_glucose_level, bmi, smoking_status, ], outputs=[label], api_name="prediccion" ) gr.Markdown( """ ## GIF """ ) gr.Markdown( """

Proyecto demo creado en el bootcamp de EDVAI 🤗

Data From IStroke Prediction Dataset update by Fede Soriano

Colab Work of what I have done

""" ) demo.launch()