Spaces:
Sleeping
Sleeping
File size: 2,118 Bytes
a7c6a70 0c413b0 a7c6a70 21be535 a7c6a70 5e945e2 21be535 a7c6a70 21be535 a7c6a70 21be535 a7c6a70 |
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 |
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()
|