File size: 4,752 Bytes
b56c41d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import gradio as gr
from pathlib import Path
import os
import pandas as pd
import xgboost

# Comentario
print("Comentario.")

input_1 = gr.Slider(minimum=0, maximum=80, 
                    value=22,
                    label="Edad_del_comprador", info="Colocar una edad")

input_2 = gr.Radio(['Youth (<25)', 'Adults (35-64)', 'Young Adults (25-34)', 'Seniors (64+)'], 
                    value="Youth (<25)",
                    label="Grupo_de_edad", info="Seleccionar una opci贸n")

input_3 = gr.Radio(['M', 'F'], 
                    value="M",
                    label="Genero_del_cliente", info="Seleccionar una opci贸n")

input_4 = gr.Radio(['Canada', 'Australia', 'United States', 'Germany', 'France', 'United Kingdom'], 
                    value="United States",
                    label="Pais", info="Seleccionar una opci贸n")

input_5 = gr.Radio(['British Columbia', 'New South Wales', 'Victoria', 'Oregon', 'California',
                    'Saarland', 'Seine Saint Denis', 'Moselle', 'Queensland', 'England', 'Nord',
                    'Washington', 'Hessen', 'Nordrhein-Westfalen', 'Hamburg', 'Loir et Cher',
                    'Kentucky', 'Seine (Paris)', 'South Australia', 'Loiret', 'Alberta', 'Bayern',
                    'Hauts de Seine', 'Yveline', 'Essonne', "Val d'Oise", 'Tasmania',
                    'Seine et Marne', 'Val de Marne', 'Pas de Calais', 'Charente-Maritime',
                    'Garonne (Haute)', 'Brandenburg', 'Texas', 'New York', 'Florida', 'Somme',
                    'Illinois', 'South Carolina', 'North Carolina', 'Georgia', 'Virginia', 'Ohio',
                    'Ontario', 'Wyoming', 'Missouri', 'Montana', 'Utah', 'Minnesota', 'Mississippi',
                    'Massachusetts', 'Arizona', 'Alabama'],
                    value="California",
                    label="Estado", info="Seleccionar una opci贸n")

input_6 = gr.Radio(['Accessories', 'Clothing', 'Bikes'], 
                   value="Bikes",
                   label="Categoria_del_producto", info="Seleccionar una opci贸n")

input_7 = gr.Radio(['Bike Racks', 'Bike Stands', 'Bottles and Cages', 'Caps', 'Cleaners',
                     'Fenders', 'Gloves', 'Helmets', 'Hydration Packs', 'Jerseys', 'Mountain Bikes',
                     'Road Bikes', 'Shorts', 'Socks', 'Tires and Tubes', 'Touring Bikes', 'Vests'], 
                   value='Bike Racks',
                   label="Subcategor铆a_del_producto", info="Seleccionar una opci贸n")

input_8 = gr.Slider(minimum=1, maximum=40, 
                    value=1,
                    label="Cantidad_de_pedidos_realizados", info="Colocar una opci贸n")

input_9 = gr.Slider(minimum=1, maximum=40, 
                    value=1,
                    label="Precio_unitario", info="Colocar una opci贸n")

output_1 = gr.Textbox(label="Ingresos")


def predecir_ingreso(input_1, input_2, input_3, input_4, input_5,
                     input_6, input_7, input_8, input_9):
    
    valores = {
        'Edad_del_comprador':input_1, 
        'Grupo_de_edad':input_2, 
        'Genero_del_cliente':input_3, 
        'Pais':input_4,
        'Estado':input_5,
        'Categoria_del_producto':input_6,
        'Subcategor铆a_del_producto':input_7,
        'Cantidad_de_pedidos_realizados':input_8,
        'Precio_unitario':input_9
    }

    valores_df = pd.DataFrame()
    valores_df = pd.concat([valores_df, pd.DataFrame([valores])], ignore_index=True)
    
    valores_df["Grupo_de_edad"] = valores_df["Grupo_de_edad"].astype("category")
    valores_df["Genero_del_cliente"] = valores_df["Genero_del_cliente"].astype("category")
    valores_df["Pais"] = valores_df["Pais"].astype("category")
    valores_df["Estado"] = valores_df["Estado"].astype("category")
    valores_df["Categoria_del_producto"] = valores_df["Categoria_del_producto"].astype("category")
    valores_df["Subcategor铆a_del_producto"] = valores_df["Subcategor铆a_del_producto"].astype("category")
                         
    # Cargar el modelo desde el archivo
    model_file = f"{os.getcwd()}/modelo_xgboost.json"
    print(model_file)
    modelo_cargado = xgboost.Booster(model_file=model_file)
    
    # Crear una matriz DMatrix para los nuevos datos
    dmatrix_valores = xgboost.DMatrix(data=valores_df, enable_categorical=True)
    
    # Realizar predicciones
    predicciones = modelo_cargado.predict(dmatrix_valores)[0]
    
    # Las predicciones se encuentran en el array 'predicciones'
    print(predicciones)
    return predicciones


# Interfaz Gradio

demo = gr.Interface(
    fn=predecir_ingreso,
    inputs=[input_1, input_2, input_3, input_4, input_5,
            input_6, input_7, input_8, input_9],
    outputs=output_1,
    title="Practica 1 de Machine Learning",
    )

demo.launch(debug=True)