-
Notifications
You must be signed in to change notification settings - Fork 4
/
inicio.py
162 lines (106 loc) · 8.53 KB
/
inicio.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
import streamlit as st
import pandas as pd
from io import StringIO
from PIL import Image
def cargar_archivo():
st.markdown("# :computer: Mi Aplicación Streamlit Para Predecir El Abandono de Clientes")
col_1,col_2,col_3 = st.columns([1, 2, 1])
with col_2:
st.image(image="images/customer-rating.png",width=300)
st.markdown(
"""
### ¡Bienvenido a la aplicación de predicción de abandono de clientes!
Esta herramienta te ayudará a identificar a los clientes que tienen más probabilidades de abandonar tu negocio, lo que te permitirá tomar medidas preventivas y mejorar la retención de clientes.
La aplicación utiliza un modelo de Machine Learning entrenado para analizar los patrones en los datos de tus clientes y predecir si abandonarán el servicio en un futuro próximo.
Para comenzar, sigue estos sencillos pasos:
1. Sube tu conjunto de datos de clientes utilizando la opción "Subir" que se encuentra en la parte de abajo. Asegúrate de que tu archivo esté en formato CSV.
2. Puedes dirigirte a la página de Análisis Exploratorio de Datos para analizar los datos que se cargaron.
3. En la página de Preprocesamiento puedes eliminar columnas o valores vacíos y atípicos
4. Una vez realizado todo ese procedimiento puedes dirigirte a Entrenamiento para Entrenar tu modelo con los parámetros de cada modelo.
2. Sube el modelo entrenado que utilizarás para realizar las predicciones. Asegúrate de que el modelo esté en formato PKL.
3. Navega por las opciones en la barra lateral para ajustar los parámetros y personalizar tu análisis.
4. Revisa las predicciones y las probabilidades generadas por el modelo.
5. Descarga el informe con las predicciones y las probabilidades para cada cliente.
¡Buena suerte en tus esfuerzos para mejorar la retención de clientes y mantener a tus clientes satisfechos!
"""
)
col1, col2, col3 = st.columns([1, 2, 1])
with col2:
gif = Image.open("images/servicio-al-cliente.png")
st.image(gif, width=300)
st.markdown("### :open_file_folder: Sube al archivo que vas a entrenar")
uploaded_file = st.file_uploader("Cargue su archivo CSV", type=["csv"])
if uploaded_file is not None:
st.session_state.uploaded_file = uploaded_file
st.session_state.df = pd.read_csv(uploaded_file)
st.markdown('''
## Acerca de los datos
''')
col_datos,col_datos2 = st.columns(2)
with col_datos:
st.markdown('''
**Genero:** si el cliente es hombre o mujer
**PersonaMayor:** si el cliente es una persona mayor o no (1, 0)
**Socio:** si el cliente tiene socio o no (Sí, No)
**Dependientes:** si el cliente tiene dependientes o no (Sí, No)
**Permanencia:** Indica el número de meses que el cliente ha estado en la empresa.
**ServicioTelefonico:** Si el cliente tiene servicio telefónico o no (Sí, No)
**VariasLineas:** si el cliente tiene múltiples líneas o no (Sí, No, Sin servicio telefónico)
**ServicioInternet:** Proveedor de servicios de Internet del cliente (DSL, Fibra óptica, No)
**SeguridadLinea:** si el cliente tiene seguridad en línea o no (Sí, No, Sin servicio de Internet)
**CopiaSeguridadLinea:** si el cliente tiene copia de seguridad en línea o no (Sí, No, Sin servicio de Internet)
''')
with col_datos2:
st.markdown('''
**ProteccionDispositivo:** si el cliente tiene protección de dispositivo o no (Sí, No, Sin servicio de Internet)
**SoporteTecnico:** si el cliente tiene soporte técnico o no (Sí, No, Sin servicio de Internet)
**ServicioTV:** si el cliente tiene streaming de TV o no (Sí, No, Sin servicio de Internet)
**ServicioPeliculas:** si el cliente tiene películas en streaming o no (Sí, No, Sin servicio de Internet)
**Contrato:** El plazo del contrato del cliente (Mes a mes, Un año, Dos años)
**FacturacionElectronica:** si el cliente tiene facturación electrónica o no (Sí, No)
**MetodoPago:** el método de pago del cliente (Cheque electrónico, Cheque enviado por correo, Transferencia bancaria (automática), Tarjeta de crédito (automática))
**RecargoMensual:** el monto cobrado al cliente mensualmente
**TotalRecargo:** El monto total cobrado al cliente
**Abondono:** Si el cliente abandonó o no (Sí o No)
''')
st.write(f"Contenido del archivo {st.session_state.uploaded_file.type}")
st.markdown("### :chart_with_upwards_trend: ¿Deseas ver el dataset?, da clic aquí abajo")
mostrar_dataset = st.checkbox("Mostrar dataset")
if mostrar_dataset:
st.write(st.session_state.df)
elif "uploaded_file" in st.session_state:
st.markdown('''
## Acerca de los datos
''')
col_datos3,col_datos4 = st.columns(2)
with col_datos3:
st.markdown('''
**Genero:** si el cliente es hombre o mujer
**PersonaMayor:** si el cliente es una persona mayor o no (1, 0)
**Socio:** si el cliente tiene socio o no (Sí, No)
**Dependientes:** si el cliente tiene dependientes o no (Sí, No)
**Permanencia:** Indica el número de meses que el cliente ha estado en la empresa.
**ServicioTelefonico:** Si el cliente tiene servicio telefónico o no (Sí, No)
**VariasLineas:** si el cliente tiene múltiples líneas o no (Sí, No, Sin servicio telefónico)
**ServicioInternet:** Proveedor de servicios de Internet del cliente (DSL, Fibra óptica, No)
**SeguridadLinea:** si el cliente tiene seguridad en línea o no (Sí, No, Sin servicio de Internet)
**CopiaSeguridadLinea:** si el cliente tiene copia de seguridad en línea o no (Sí, No, Sin servicio de Internet)
''')
with col_datos4:
st.markdown('''
**ProteccionDispositivo:** si el cliente tiene protección de dispositivo o no (Sí, No, Sin servicio de Internet)
**SoporteTecnico:** si el cliente tiene soporte técnico o no (Sí, No, Sin servicio de Internet)
**ServicioTV:** si el cliente tiene streaming de TV o no (Sí, No, Sin servicio de Internet)
**ServicioPeliculas:** si el cliente tiene películas en streaming o no (Sí, No, Sin servicio de Internet)
**Contrato:** El plazo del contrato del cliente (Mes a mes, Un año, Dos años)
**FacturacionElectronica:** si el cliente tiene facturación electrónica o no (Sí, No)
**MetodoPago:** el método de pago del cliente (Cheque electrónico, Cheque enviado por correo, Transferencia bancaria (automática), Tarjeta de crédito (automática))
**RecargoMensual:** el monto cobrado al cliente mensualmente
**TotalRecargo:** El monto total cobrado al cliente
**Abondono:** Si el cliente abandonó o no (Sí o No)
''')
st.markdown(f"Archivo previamente subido: **{st.session_state.uploaded_file.name}**")
st.markdown("### :chart_with_upwards_trend: ¿Deseas ver el dataset?, da clic aquí abajo")
mostrar_dataset = st.checkbox("Mostrar dataset")
if mostrar_dataset:
st.write(st.session_state.df)