Spaces:
Sleeping
Sleeping
| 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() | |