Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, Query | |
| import joblib | |
| import pandas as pd | |
| # Cargar modelo y datos | |
| modelo_defecto = joblib.load("modelo_causa_paro.pkl") | |
| encoder_defecto = joblib.load("encoder_paro_codigo.pkl") | |
| df_defecto = joblib.load("df_codificado_causa_paro.pkl") | |
| app = FastAPI() | |
| def root(): | |
| return {"mensaje": "API de predicci贸n de defecto"} | |
| def defecto(maquina: str = Query(..., description="Nombre de la m谩quina")): | |
| if maquina not in df_defecto["Maquina"].unique(): | |
| return {"error": f"M谩quina '{maquina}' no encontrada en datos de defecto."} | |
| try: | |
| maquina_encoded = df_defecto[df_defecto["Maquina"] == maquina]["Maquina_encoded"].iloc[0] | |
| df_maquina = df_defecto[df_defecto["Maquina"] == maquina] | |
| exclude_cols_defecto = ["ParoCodigo", "ParoCodigo_encoded", "ParoDescripcion", "Maquina", "FechaHoraEvento"] | |
| features_defecto = [col for col in df_defecto.columns if col not in exclude_cols_defecto] | |
| fila_test = df_maquina[features_defecto].mean().to_frame().T | |
| fila_test["Maquina_encoded"] = maquina_encoded | |
| pred = modelo_defecto.predict(fila_test)[0] | |
| prob = modelo_defecto.predict_proba(fila_test)[0][pred] | |
| causa_paro = encoder_defecto.inverse_transform([pred])[0] | |
| return { | |
| "tipo": "defecto", | |
| "maquina": maquina, | |
| "causa_paro_predicha": causa_paro, | |
| "probabilidad": round(prob * 100, 2) | |
| } | |
| except Exception as e: | |
| return {"error": f"Error en predicci贸n de defecto: {str(e)}"} | |