Spaces:
Sleeping
Sleeping
import gradio as gr | |
import joblib | |
import pandas as pd | |
import numpy as np | |
from tensorflow.keras.models import load_model | |
from sklearn.preprocessing import StandardScaler | |
# Cargar el modelo | |
#modelo = load_model('mi_modelo_red_neuronal.h5') | |
modelo = joblib.load('mi_modelo_Adaboost_V3.pkl') | |
def transformacion (dataframe_1): | |
dataframe_1.replace({'estado_terminal':{'Activo':1,'Bloqueado':0}}, inplace=True) | |
#Se seleccionan todas las filas de las columnas 2,3 y 6, y todas que van de la 14 a la 37 | |
dataframe_1 = dataframe_1.iloc[:, [2,4,6] + list(range(14, 37))] | |
dataframe_1['tecnologiapp_a'] = 0 | |
dataframe_1.loc[dataframe_1['tecnologiapp'] == 'a', 'tecnologiapp_a'] = 1 | |
dataframe_1['tecnologiapp_b'] = 0 | |
dataframe_1.loc[dataframe_1['tecnologiapp'] == 'b', 'tecnologiapp_b'] = 1 | |
dataframe_1['tecnologiapp_c'] = 0 | |
dataframe_1.loc[dataframe_1['tecnologiapp'] == 'c', 'tecnologiapp_c'] = 1 | |
dataframe_1['tecnologiapp_d'] = 0 | |
dataframe_1.loc[dataframe_1['tecnologiapp'] == 'd', 'tecnologiapp_d'] = 1 | |
dataframe_1['tecnologiaaf_a'] = 0 | |
dataframe_1.loc[dataframe_1['tecnologiaaf'] == 'a', 'tecnologiaaf_a'] = 1 | |
dataframe_1['tecnologiaaf_b'] = 0 | |
dataframe_1.loc[dataframe_1['tecnologiaaf'] == 'b', 'tecnologiaaf_b'] = 1 | |
dataframe_1['tecnologiaaf_c'] = 0 | |
dataframe_1.loc[dataframe_1['tecnologiaaf'] == 'c', 'tecnologiaaf_c'] = 1 | |
dataframe_1['tecnologiaaf_d'] = 0 | |
dataframe_1.loc[dataframe_1['tecnologiaaf'] == 'd', 'tecnologiaaf_d'] = 1 | |
dataframe_1['tecnologiaaf_e'] = 0 | |
dataframe_1.loc[dataframe_1['tecnologiaaf'] == 'e', 'tecnologiaaf_e'] = 1 | |
#Se crea DataFRame | |
data_sel_num = pd.DataFrame() | |
#Se transforma la data | |
data_sel_num['log_trx_dia_cero'] = np.log1p(dataframe_1['trx_dia_cero']) | |
data_sel_num['log_trx_dia_uno'] = np.log1p(dataframe_1['trx_dia_uno']) | |
data_sel_num['log_trx_dia_dos'] = np.log1p(dataframe_1['trx_dia_dos']) | |
data_sel_num['log_trx_dia_tres'] = np.log1p(dataframe_1['trx_dia_tres']) | |
data_sel_num['log_trx_dia_cuatro'] = np.log1p(dataframe_1['trx_dia_cuatro']) | |
data_sel_num['log_trx_dia_cinco'] = np.log1p(dataframe_1['trx_dia_cinco']) | |
data_sel_num['log_trx_dia_seis'] = np.log1p(dataframe_1['trx_dia_seis']) | |
data_sel_num['log_trx_mes_tres'] = np.log1p(dataframe_1['trx_mes_tres']) | |
data_sel_num['log_trx_mes_dos'] = np.log1p(dataframe_1['trx_mes_dos']) | |
data_sel_num['log_trx_mes_uno'] = np.log1p(dataframe_1['trx_mes_uno']) | |
data_sel_num['log_total_terminales'] = np.log1p(dataframe_1['total_terminales']) | |
data_sel_num['sqrt_cantidad_falla_m3'] = np.power(dataframe_1['cantidad_falla_m3'], 0.1) | |
data_sel_num['sqrt_cantidad_falla_m2'] = np.power(dataframe_1['cantidad_falla_m3'], 0.1) | |
data_sel_num['sqrt_cantidad_falla_mes1'] = np.power(dataframe_1['cantidad_falla_mes1'], 0.1) | |
data_sel_num['log_antiguedad_creacion_terminal'] = np.log1p(dataframe_1['antiguedad_creacion_terminal']) | |
data_sel_num['log_antiguedad_version'] = np.log1p(dataframe_1['antiguedad_version']) | |
data_sel_num['log_antiguedad_compra_pos'] = np.log1p(dataframe_1['antiguedad_compra_pos']) | |
#Se normalizan los datos | |
scaler = StandardScaler() | |
X_train_scaled = scaler.fit_transform(data_sel_num) | |
#Se convierte en DataFrame | |
X_train_scaled_df = pd.DataFrame(X_train_scaled, columns=data_sel_num.columns) | |
#Agregar campos estado terminal | |
X_train_scaled_df['estado_terminal'] = dataframe_1['estado_terminal'] | |
X_train_scaled_df['tecnologiapp_a'] = dataframe_1['tecnologiapp_a'] | |
X_train_scaled_df['tecnologiapp_b'] = dataframe_1['tecnologiapp_b'] | |
X_train_scaled_df['tecnologiapp_c'] = dataframe_1['tecnologiapp_c'] | |
X_train_scaled_df['tecnologiapp_d'] = dataframe_1['tecnologiapp_d'] | |
X_train_scaled_df['tecnologiaaf_a'] = dataframe_1['tecnologiaaf_a'] | |
X_train_scaled_df['tecnologiaaf_b'] = dataframe_1['tecnologiaaf_b'] | |
X_train_scaled_df['tecnologiaaf_c'] = dataframe_1['tecnologiaaf_c'] | |
X_train_scaled_df['tecnologiaaf_d'] = dataframe_1['tecnologiaaf_d'] | |
X_train_scaled_df['tecnologiaaf_e'] = dataframe_1['tecnologiaaf_e'] | |
return X_train_scaled_df | |
# Definir una funci贸n para hacer predicciones desde un DataFrame | |
def predecir_estado(csv_file): | |
# Leer el archivo CSV | |
df = pd.read_csv(csv_file, sep =";" ,encoding="latin-1") | |
#Transformar los datos para el modelo | |
X_train_scaled_df = transformacion(df) | |
# Realizar las predicciones | |
predicciones = modelo.predict(X_train_scaled_df.values) | |
resultados_red =pd.DataFrame(predicciones, columns=['predictions']) | |
resultados_red=(resultados_red>0.5).astype(int) | |
# Crear un DataFrame para mostrar las predicciones | |
resultados = pd.DataFrame() | |
resultados['Id terminal'] = df['terminal'] | |
resultados['Estado_Predicho'] = resultados_red | |
resultados['trx_dia_cero'] = df['trx_dia_cero'] | |
resultados['trx_dia_uno'] = df['trx_dia_uno'] | |
resultados['trx_dia_dos'] = df['trx_dia_dos'] | |
resultados['trx_dia_tres'] = df['trx_dia_tres'] | |
resultados['trx_dia_cuatro'] = df['trx_dia_cuatro'] | |
resultados['trx_dia_cinco'] = df['trx_dia_cinco'] | |
resultados['trx_dia_seis'] = df['trx_dia_seis'] | |
resultados['trx_mes_tres'] = df['trx_mes_tres'] | |
resultados['trx_mes_dos'] = df['trx_mes_dos'] | |
resultados['trx_mes_uno'] = df['trx_mes_uno'] | |
resultados['total_terminales'] = df['total_terminales'] | |
resultados['cantidad_falla_m3'] = df['cantidad_falla_m3'] | |
resultados['cantidad_falla_m2'] = df['cantidad_falla_m2'] | |
resultados['cantidad_falla_mes1'] = df['cantidad_falla_mes1'] | |
resultados['antiguedad_creacion_terminal'] = df['antiguedad_creacion_terminal'] | |
resultados['antiguedad_version'] = df['antiguedad_version'] | |
resultados['antiguedad_compra_pos'] = df['antiguedad_compra_pos'] | |
resultados['tecnologiapp'] = df['tecnologiapp'] | |
resultados['tecnologiaaf'] = df['tecnologiaaf'] | |
return resultados | |
# Crear la interfaz de Gradio para cargar archivos CSV | |
entrada = gr.File(label="Subir archivo CSV") | |
salida = gr.Dataframe(label="Estados de las terminales") | |
gr.Interface(fn=predecir_estado, inputs=entrada, outputs=salida, title="Clasificaci贸n del Estado de Terminales").launch() |