Upload 3 files
Browse files- app.py +47 -0
- modelo_churn.joblib +3 -0
- requirements.txt +4 -0
app.py
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
import joblib
|
| 3 |
+
import pandas as pd
|
| 4 |
+
|
| 5 |
+
# 1. Cargar el modelo de Churn
|
| 6 |
+
# Usamos try/except por si olvidaste ejecutar el entrenar.py
|
| 7 |
+
try:
|
| 8 |
+
modelo = joblib.load("modelo_churn.joblib")
|
| 9 |
+
except:
|
| 10 |
+
modelo = None
|
| 11 |
+
|
| 12 |
+
# 2. Funci贸n de predicci贸n
|
| 13 |
+
def predecir_abandono(antiguedad, pago_mensual, es_senior):
|
| 14 |
+
if modelo is None:
|
| 15 |
+
return {"Error: Modelo no encontrado": 1}
|
| 16 |
+
|
| 17 |
+
# Preparamos los datos igual que en el entrenamiento
|
| 18 |
+
# es_senior viene del checkbox (True/False), lo convertimos a 1 o 0
|
| 19 |
+
senior_num = 1 if es_senior else 0
|
| 20 |
+
|
| 21 |
+
datos = pd.DataFrame([[antiguedad, pago_mensual, senior_num]],
|
| 22 |
+
columns=['tenure', 'MonthlyCharges', 'SeniorCitizen'])
|
| 23 |
+
|
| 24 |
+
# Predecir probabilidades
|
| 25 |
+
# proba[0] = Probabilidad de quedarse (No Churn)
|
| 26 |
+
# proba[1] = Probabilidad de irse (Yes Churn)
|
| 27 |
+
proba = modelo.predict_proba(datos)[0]
|
| 28 |
+
|
| 29 |
+
return {
|
| 30 |
+
"Cliente Fiel (Se queda)": float(proba[0]),
|
| 31 |
+
"Riesgo de Abandono (Churn)": float(proba[1])
|
| 32 |
+
}
|
| 33 |
+
|
| 34 |
+
# 3. Interfaz Web
|
| 35 |
+
interfaz = gr.Interface(
|
| 36 |
+
fn=predecir_abandono,
|
| 37 |
+
inputs=[
|
| 38 |
+
gr.Slider(minimum=0, maximum=72, label="Antig眉edad (Meses)", info="驴Cu谩nto tiempo lleva con nosotros?"),
|
| 39 |
+
gr.Number(label="Pago Mensual ($)", value=50.0),
|
| 40 |
+
gr.Checkbox(label="驴Es Adulto Mayor (Senior)?")
|
| 41 |
+
],
|
| 42 |
+
outputs=gr.Label(num_top_classes=2, label="Predicci贸n de Riesgo"),
|
| 43 |
+
title="Detector de Fugas de Clientes (Churn)",
|
| 44 |
+
description="Introduce los datos del cliente para evaluar si est谩 en riesgo de cancelar el servicio."
|
| 45 |
+
)
|
| 46 |
+
|
| 47 |
+
interfaz.launch()
|
modelo_churn.joblib
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:3234d5a90c990346555192db47d7c95a7c18c626b9e42d691f72f545a253555c
|
| 3 |
+
size 6297
|
requirements.txt
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
scikit-learn
|
| 2 |
+
pandas
|
| 3 |
+
joblib
|
| 4 |
+
gradio
|