jackfroooot's picture
Upload folder using huggingface_hub
5a29878 verified
import streamlit as st
import pandas as pd
from huggingface_hub import hf_hub_download
import joblib
# Business can tune the threshold used to decide to go for maintenance or not
predict_threshold = 0.55
# Download and load the trained model
proj_name = "engine-maintenance-prediction-proj"
model_path = hf_hub_download(repo_id=f"jackfroooot/{proj_name}", filename="best_engine_maintenance_pred_model_v1.joblib", repo_type="model")
model = joblib.load(model_path)
# Streamlit UI
st.title("Engine Maintenance Prediction")
st.write("""
This application predicts whether an engine needs **maintenance** based on the sensor values. Please enter the sensor details below to get a maintenance prediction indication.
""")
# User input
Engine_rpm = st.number_input("Engine rpm", min_value=0, max_value=5000, step=1, value=790)
Lub_oil_pressure = st.number_input("Lub oil pressure", min_value=0.0, max_value=10.0, value=3.3)
Fuel_pressure = st.number_input("Fuel pressure", min_value=0.0, max_value=25.0, value=6.65)
Coolant_pressure = st.number_input("Coolant pressure", min_value=0.0, max_value=10.0, value=2.34)
lub_oil_temp = st.number_input("Lub oil temp", min_value=0.0, max_value=100.0, value=77.0)
Coolant_temp = st.number_input("Coolant temp", min_value=0.0, max_value=250.0, value=78.0)
# Assemble input into DataFrame
input_data = 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_temp ,
'Coolant temp' : Coolant_temp
}])
# Predict button
if st.button("Predict Maintenance"):
prediction = model.predict_proba(input_data)[:, 1][0]
if prediction >= 0.85: risk = "πŸ”΄ High Risk"
elif prediction >= predict_threshold: risk = "🟠 Medium Risk"
else: risk = "🟒 Low Risk"
st.subheader("Prediction Result:")
st.success(f"Prediction (Risk={risk}, score={prediction:.2f}) : {'**Require Maintenance**' if prediction > predict_threshold else '**Does not need Maintenance**'}")