Spaces:
Sleeping
Sleeping
Upload 5 files
Browse files- app_defecto.py +42 -0
- df_codificado_causa_paro.pkl +3 -0
- encoder_paro_codigo.pkl +3 -0
- modelo_causa_paro.pkl +3 -0
- requirements.txt +6 -0
app_defecto.py
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from fastapi import FastAPI, Query
|
| 2 |
+
import joblib
|
| 3 |
+
import pandas as pd
|
| 4 |
+
|
| 5 |
+
# Cargar modelo y datos
|
| 6 |
+
modelo_defecto = joblib.load("modelo_causa_paro.pkl")
|
| 7 |
+
encoder_defecto = joblib.load("encoder_paro_codigo.pkl")
|
| 8 |
+
df_defecto = joblib.load("df_codificado_causa_paro.pkl")
|
| 9 |
+
|
| 10 |
+
app = FastAPI()
|
| 11 |
+
|
| 12 |
+
@app.get("/")
|
| 13 |
+
def root():
|
| 14 |
+
return {"mensaje": "API de predicci贸n de defecto"}
|
| 15 |
+
|
| 16 |
+
@app.get("/defecto")
|
| 17 |
+
def defecto(maquina: str = Query(..., description="Nombre de la m谩quina")):
|
| 18 |
+
if maquina not in df_defecto["Maquina"].unique():
|
| 19 |
+
return {"error": f"M谩quina '{maquina}' no encontrada en datos de defecto."}
|
| 20 |
+
try:
|
| 21 |
+
maquina_encoded = df_defecto[df_defecto["Maquina"] == maquina]["Maquina_encoded"].iloc[0]
|
| 22 |
+
df_maquina = df_defecto[df_defecto["Maquina"] == maquina]
|
| 23 |
+
|
| 24 |
+
exclude_cols_defecto = ["ParoCodigo", "ParoCodigo_encoded", "ParoDescripcion", "Maquina", "FechaHoraEvento"]
|
| 25 |
+
features_defecto = [col for col in df_defecto.columns if col not in exclude_cols_defecto]
|
| 26 |
+
|
| 27 |
+
fila_test = df_maquina[features_defecto].mean().to_frame().T
|
| 28 |
+
fila_test["Maquina_encoded"] = maquina_encoded
|
| 29 |
+
|
| 30 |
+
pred = modelo_defecto.predict(fila_test)[0]
|
| 31 |
+
prob = modelo_defecto.predict_proba(fila_test)[0][pred]
|
| 32 |
+
|
| 33 |
+
causa_paro = encoder_defecto.inverse_transform([pred])[0]
|
| 34 |
+
|
| 35 |
+
return {
|
| 36 |
+
"tipo": "defecto",
|
| 37 |
+
"maquina": maquina,
|
| 38 |
+
"causa_paro_predicha": causa_paro,
|
| 39 |
+
"probabilidad": round(prob * 100, 2)
|
| 40 |
+
}
|
| 41 |
+
except Exception as e:
|
| 42 |
+
return {"error": f"Error en predicci贸n de defecto: {str(e)}"}
|
df_codificado_causa_paro.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a28930f193d49b6146e6fb38f05f0eb493dfb235aa6ff795e3b65b1011bd9108
|
| 3 |
+
size 64660363
|
encoder_paro_codigo.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b5994d83cff54649f4f445c5f501249bccefa5e837adedb2d487d88bd2543bd3
|
| 3 |
+
size 2396
|
modelo_causa_paro.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d31a4e9129d98690d73a2e619c119e4554a7ed8892a6b93f5d621df4b41e3efe
|
| 3 |
+
size 631866937
|
requirements.txt
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
fastapi
|
| 2 |
+
uvicorn[standard]
|
| 3 |
+
joblib
|
| 4 |
+
pandas
|
| 5 |
+
numpy
|
| 6 |
+
scikit-learn
|