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()