Spaces:
Sleeping
Sleeping
| import pandas as pd | |
| import numpy as np | |
| from sklearn.preprocessing import StandardScaler | |
| from sklearn.cluster import KMeans | |
| import gradio as gr | |
| # Cargar el dataset real | |
| df = pd.read_csv('dataset_actualizado.csv') | |
| # Seleccionar solo columnas numéricas | |
| X = df[['frecuencia_compra', 'monto_promedio', 'edad', 'ingreso']] | |
| # Escalar datos | |
| scaler = StandardScaler() | |
| X_scaled = scaler.fit_transform(X) | |
| # Entrenar modelo KMeans | |
| kmeans = KMeans(n_clusters=3, random_state=42) | |
| kmeans.fit(X_scaled) | |
| # Función para predecir segmento | |
| def predecir_segmento(frecuencia_compra, monto_promedio, edad, ingreso): | |
| nuevo = pd.DataFrame([[frecuencia_compra, monto_promedio, edad, ingreso]], | |
| columns=['frecuencia_compra', 'monto_promedio', 'edad', 'ingreso']) | |
| nuevo_scaled = scaler.transform(nuevo) | |
| cluster = kmeans.predict(nuevo_scaled)[0] | |
| return f"El caso ingresado pertenece al segmento {cluster}" | |
| # Interfaz Gradio | |
| iface = gr.Interface( | |
| fn=predecir_segmento, | |
| inputs=[ | |
| gr.Number(label="Frecuencia de Compra"), | |
| gr.Number(label="Monto Promedio"), | |
| gr.Number(label="Edad"), | |
| gr.Number(label="Ingreso") | |
| ], | |
| outputs="text", | |
| title="Clasificación de Clientes por Segmento", | |
| description="""### Descripción de los Segmentos | |
| **Segmento 0:** | |
| - Edad promedio: 49 años | |
| - Frecuencia de compra: moderada (5.4) | |
| - Monto promedio: bajo | |
| - Ingreso promedio: medio (≈ $3.3M) | |
| - Perfil: Usuarios de edad media-alta, compras frecuentes pero no costosas, ingresos medios. | |
| **Segmento 1:** | |
| - Edad promedio: 41 años | |
| - Frecuencia de compra: alta (8) | |
| - Monto promedio: medio | |
| - Ingreso promedio: alto (≈ $7.6M) | |
| - Perfil: Usuarios jóvenes, con alta frecuencia e ingresos elevados. | |
| **Segmento 2:** | |
| - Edad promedio: 46 años | |
| - Frecuencia de compra: baja (3.3) | |
| - Monto promedio: alto | |
| - Ingreso promedio: medio-alto (≈ $5.5M) | |
| - Perfil: Usuarios con baja frecuencia, pero compras de alto valor. | |
| 👉 Esta información te permitirá entender el segmento al que pertenece un nuevo usuario según sus datos. | |
| """ | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch() | |