File size: 1,451 Bytes
13cd32e
9e39b0a
 
 
 
13cd32e
 
1c76c45
1f90eaa
a425476
4387dab
 
 
1c76c45
4387dab
 
1c76c45
4387dab
1c76c45
 
13cd32e
 
 
1c76c45
13cd32e
 
 
 
1c76c45
4387dab
a425476
13cd32e
84de482
13cd32e
1c76c45
13cd32e
 
 
84de482
 
 
 
13cd32e
 
 
 
 
 
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
import gradio as gr
import pandas as pd
import joblib
import io

def predecir_excel(file):
    try:
        # Cargar el modelo cada vez para capturar errores si falta o está dañado
        model = joblib.load("modelo_noshows.pkl")

        if file is None:
            return None, "⚠️ No se recibió ningún archivo."

        # Obtener la ruta o el nombre temporal del archivo
        file_path = file.name if hasattr(file, "name") else file

        # Leer Excel
        df = pd.read_excel(file_path)

        # Predecir
        pred = model.predict(df)
        df["predicción"] = ["inasistencia" if p == 0 else "asistencia" for p in pred]

        # Guardar Excel en memoria
        output = io.BytesIO()
        with pd.ExcelWriter(output, engine="openpyxl") as writer:
            df.to_excel(writer, index=False)
        output.seek(0)

        return output, "✅ Predicción completada correctamente"

    except Exception as e:
        return None, f"❌ Error: {e}"

# Crear interfaz Gradio
iface = gr.Interface(
    fn=predecir_excel,
    inputs=gr.File(label="Sube un archivo Excel (.xlsx)", file_types=[".xlsx"]),
    outputs=[
        gr.File(label="📥 Descargar predicciones"),
        gr.Textbox(label="Estado de la ejecución")
    ],
    title="Predicción de inasistencias",
    description="Sube un archivo Excel con tus datos y descarga el resultado con la predicción."
)

if __name__ == "__main__":
    iface.launch()