Prueba / app.py
GaboDataScientist's picture
Update app.py
713dc31
import gradio as gr
from joblib import load
import pandas as pd
y_values = ['Insufficient_Weight', 'Normal_Weight', 'Obesity_Type_I', 'Obesity_Type_II', 'Obesity_Type_III', 'Overweight_Level_I', 'Overweight_Level_II']
y=pd.Series(y_values)
y=y.astype('category')
model=load('./model_svm.joblib')
#aquí indicamos cuál es el valor de las clases
label_encoding=load('./label_classes.joblib') # aquí traemos el orden de clasificación de las categoría
idx_labels=label_encoding.transform(y.cat.categories) # reordeno mis categorías con esos índices
class_names=y.cat.categories[idx_labels] # aquí damos los valores de las categorías en el orden que teníamos guardados
def run_my_model(tabla): #aquí ponemos que es solo una entrada pero es UNA TABLA la entrada
# Proceso a realizar (modelo ML)
X_new=tabla
y_predict=model.predict(X_new)[0] # para que me quiten los corchetes del resultado debemos agregar el elemento 0
return "El resultado es: " + class_names[y_predict] # aquí indexamos el resultado del número de clase para que me arroje cuál es la categoría
gui= gr.Interface(
fn=run_my_model,
inputs=gr.Dataframe(
headers=['Gender','Age','Height','Weight','family_history_with_overweight','FAVC','FCVC','NCP','CAEC','SMOKE','CH2O','SCC','FAF','TUE','CALC','MTRANS'], # que me de todas excepto la última
datatype=['str','number','number','number','str','str','number','number','str','str','number','str','number','number','str','str'], #lo tengo que poner tal cual lo quiero poner, la última que se llama obesidad no cuenta para nosotros
#default=[X.iloc[0,:].tolist()],# esto es para que aparezca prerellenados los campos de entrada
row_count=1, # aquí asignamos el # de renglones que pondremos en la tabla
col_count=16), # aquí asignamos el # de columnas que pondremos en la tabla
#aquí le hago para meter como inputs una tabla
outputs="text",
live=True, #significa que podemos producir el resultado de salida al tiempo que doy una entrada
title='Nombre de servicio web'
)
gui.launch(inbrowser=True, share=True)