import streamlit as st import pandas as pd import joblib from huggingface_hub import hf_hub_download st.set_page_config(page_title="Predictive Maintenance – Engine Health", layout="centered") st.title("Predictive Maintenance – Engine Health") st.write("Enter engine sensor readings to predict whether maintenance is needed.") MODEL_REPO = "SabarnaDeb/Capstone_PredictiveMaintenance_Model" MODEL_FILE = "model.joblib" @st.cache_resource def load_model(): model_path = hf_hub_download(repo_id=MODEL_REPO, filename=MODEL_FILE, repo_type="model") return joblib.load(model_path) model = load_model() FEATURES = [ "engine_rpm", "lub_oil_pressure", "fuel_pressure", "coolant_pressure", "lub_oil_temp", "coolant_temp" ] engine_rpm = st.number_input("Engine RPM", value=800.0) lub_oil_pressure = st.number_input("Lub Oil Pressure", value=4.0) fuel_pressure = st.number_input("Fuel Pressure", value=6.5) coolant_pressure = st.number_input("Coolant Pressure", value=3.5) lub_oil_temperature = st.number_input("Lub Oil Temperature", value=80.0) coolant_temperature = st.number_input("Coolant Temperature", value=85.0) if st.button("Predict"): input_df = pd.DataFrame([{ "engine_rpm": engine_rpm, "lub_oil_pressure": lub_oil_pressure, "fuel_pressure": fuel_pressure, "coolant_pressure": coolant_pressure, "lub_oil_temp": lub_oil_temperature, "coolant_temp": coolant_temperature, }]) pred = int(model.predict(input_df[FEATURES])[0]) prob = None if hasattr(model, "predict_proba"): prob = float(model.predict_proba(input_df[FEATURES])[:, 1][0]) st.subheader("Prediction Result") if pred == 1: st.error("⚠️ Maintenance Needed") else: st.success("✅ Normal Operation") if prob is not None: st.write(f"Confidence (maintenance probability): **{prob:.2f}**") st.subheader("Input Data (saved as DataFrame)") st.dataframe(input_df)