|
|
import gradio as gr
|
|
|
import joblib
|
|
|
import pandas as pd
|
|
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
modelo = joblib.load("modelo_churn.joblib")
|
|
|
except:
|
|
|
modelo = None
|
|
|
|
|
|
|
|
|
def predecir_abandono(antiguedad, pago_mensual, es_senior):
|
|
|
if modelo is None:
|
|
|
return {"Error: Modelo no encontrado": 1}
|
|
|
|
|
|
|
|
|
|
|
|
senior_num = 1 if es_senior else 0
|
|
|
|
|
|
datos = pd.DataFrame([[antiguedad, pago_mensual, senior_num]],
|
|
|
columns=['tenure', 'MonthlyCharges', 'SeniorCitizen'])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
proba = modelo.predict_proba(datos)[0]
|
|
|
|
|
|
return {
|
|
|
"Cliente Fiel (Se queda)": float(proba[0]),
|
|
|
"Riesgo de Abandono (Churn)": float(proba[1])
|
|
|
}
|
|
|
|
|
|
|
|
|
interfaz = gr.Interface(
|
|
|
fn=predecir_abandono,
|
|
|
inputs=[
|
|
|
gr.Slider(minimum=0, maximum=72, label="Antigüedad (Meses)", info="¿Cuánto tiempo lleva con nosotros?"),
|
|
|
gr.Number(label="Pago Mensual ($)", value=50.0),
|
|
|
gr.Checkbox(label="¿Es Adulto Mayor (Senior)?")
|
|
|
],
|
|
|
outputs=gr.Label(num_top_classes=2, label="Predicción de Riesgo"),
|
|
|
title="Detector de Fugas de Clientes (Churn)",
|
|
|
description="Introduce los datos del cliente para evaluar si está en riesgo de cancelar el servicio."
|
|
|
)
|
|
|
|
|
|
interfaz.launch() |