SabarnaDeb's picture
Update app.py
197686d verified
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)