ValidateCT_MB / app.py
SalvadorUOC's picture
Update app.py
c0040a1 verified
import gradio as gr
import joblib
import pandas as pd
from pathlib import Path
# Carga tu modelo (ruta robusta relativa al archivo)
model = joblib.load("rfc_search_20251204.joblib")
def predict(IL1, WL1, IL2, WL2, QCL2, IL3, WL3, AmbientTemp, AL1, AL2, RLL2, AL3, RLL3):
# Construye un DataFrame con los nombres EXACTOS de tus features
X = pd.DataFrame([{
"A+ L1": AL1,
"I L1": IL1,
"W+ L1": WL1,
"A+ L2": AL2,
"W+ L3": WL3,
"W+ L2": WL2,
"I L2": IL2,
"Ambient Temp": AmbientTemp,
"I L3": IL3,
"R+L L2": RLL2,
"Q_C L2": QCL2,
"R+L L3": RLL3,
"A+ L3": AL3
}])
# Predicción (clasificación)
pred = model.predict(X)[0]
# Si tu modelo tiene predict_proba
proba_txt = ""
if hasattr(model, "predict_proba"):
proba = model.predict_proba(X)[0]
# Obtener las clases de forma segura (pipeline -> rf)
rf = model.named_steps["rf"] if hasattr(model, "named_steps") else model
classes = getattr(model, "classes_", None)
if classes is None:
classes = getattr(rf, "classes_", None)
if classes is not None:
pairs = [f"{c}: {p:.4f}" for c, p in zip(classes, proba)]
proba_txt = " " + ", ".join(pairs)
else:
proba_txt = " " + ", ".join([f"{p:.4f}" for p in proba])
return pred, proba_txt
title_html = (
"<div style='text-align: center; margin-bottom: 1rem'>"
"<img src='data:image/png;base64,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' alt='Logo UOC' style='max-height: 80px; margin-bottom: 0.5rem' />"
"</div>"
"UOC - TFM - Salvador Bordón Ruano<br>"
"Detección de averías en Centros de Transformación de media a baja tensión<br>"
"<h1 style='text-align: center; margin-bottom: 1rem'>Validador de modelo (RandomForestClassifier)</h1>"
)
demo = gr.Interface(
fn=predict,
inputs=[
gr.Number(label="I L1: Phase current L1-N" ), # IL1
gr.Number(label="W+ L1: Active power L1-N"), # WL1
gr.Number(label="I L2: Phase Current L2-N"), # IL2
gr.Number(label="W+ L2: Active power L2-N"), # WL2
gr.Number(label="Q_C L2: Capacitive Reactive power L2-N"), # QCL2
gr.Number(label="I L3: Phase Current L3-N"), # IL3
gr.Number(label="W+ L3: Active power L3-N"), # WL3
gr.Number(label="Ambient Temp: Ambient Temperature"), # AmbientTemp
gr.Number(label="A+ L1: Import active energy L1-N"), # AL1
gr.Number(label="A+ L2: Import active energy L2-N"), # AL2
gr.Number(label="R+L L2: Reactive Inductive Energy L2-N"), # RLL2
gr.Number(label="A+ L3: Import active energy L3-N"), # AL3
gr.Number(label="R+L L3: Reactive Inductive Energy L3-N") # RLL3
],
outputs=[gr.Textbox(label="Resultado"), gr.Textbox(label="Probabilidades")],
title=title_html,
description="Introducir los valores de las características para obtener la predicción. Los campos a informar son las características seleccionadas para entrenar el modelo."
)
if __name__ == "__main__":
demo.launch() # local