fault / app.py
DevNumb's picture
Update app.py
41758de verified
import gradio as gr
import joblib
import pandas as pd
import json
model = joblib.load("isolation_forest_model.joblib")
scaler = joblib.load("standard_scaler.joblib")
features = joblib.load("features_to_scale.joblib")
def predict(json_input):
try:
data = json.loads(json_input)
units = data.get("units", [])
row = {
"CWL_SEC_LOAD": data.get("cooling_load", 0),
"OA_TEMP_WB": data.get("wet_bulb", 0),
}
for i in range(3):
unit = units[i] if i < len(units) else {}
row[f"CHL_COMP_SPD_CTRL_{i+1}"] = unit.get("speed", 0)
row[f"CT_FAN_SPD_CTRL_{i+1}"] = unit.get("fan", 0)
row[f"CHL_CW_FLOW_{i+1}"] = unit.get("flow", 0)
df = pd.DataFrame([row]).reindex(columns=features, fill_value=0)
scaled = scaler.transform(df)
pred = model.predict(scaled)[0]
score = model.decision_function(scaled)[0]
return {
"prediction": "Fault" if pred == -1 else "Normal",
"fault_score": float(score)
}
except json.JSONDecodeError:
return {"error": "Invalid JSON"}
except Exception as e:
return {"error": str(e)}
demo = gr.Interface(
fn=predict,
inputs=gr.Textbox(lines=20, label="JSON Input"),
outputs="json",
title="HVAC Fault Detection"
)
demo.launch(server_name="0.0.0.0", server_port=7860)