|
|
| import os |
| import pandas as pd |
| import joblib |
| import streamlit as st |
| from huggingface_hub import snapshot_download |
|
|
| |
| repo_identifier = "rakesh1248/random_forest_engine_condition_classifier" |
| model_file = "random_forest_model.joblib" |
|
|
| cache_dir = "./model_cache" |
| os.makedirs(cache_dir, exist_ok=True) |
|
|
| @st.cache_resource |
| def initialize_model(): |
| try: |
| local_repo = snapshot_download(repo_id=repo_identifier, local_dir=cache_dir) |
| model_location = os.path.join(local_repo, model_file) |
| return joblib.load(model_location) |
| except Exception as err: |
| st.error(f"Model loading failed: {err}") |
| st.stop() |
|
|
| model_instance = initialize_model() |
|
|
| |
| st.set_page_config(layout="wide") |
| st.title("Predictive Maintenance Solution for Engine Systems") |
|
|
| st.sidebar.header("Input Parameters") |
|
|
| rpm_val = st.sidebar.slider("Engine RPM", 60, 2300, 750) |
| oil_pressure = st.sidebar.slider("Lub Oil Pressure", 0.0, 8.0, 3.5, 0.1) |
| fuel_press = st.sidebar.slider("Fuel Pressure", 0.0, 22.0, 6.0, 0.1) |
| cool_press = st.sidebar.slider("Coolant Pressure", 0.0, 8.0, 2.0, 0.1) |
| oil_temp = st.sidebar.slider("Lub Oil Temperature", 70.0, 90.0, 78.0, 0.1) |
| cool_temp = st.sidebar.slider("Coolant Temperature", 60.0, 200.0, 80.0, 0.1) |
|
|
| input_frame = pd.DataFrame([{ |
| 'Engine rpm': rpm_val, |
| 'Lub oil pressure': oil_pressure, |
| 'Fuel pressure': fuel_press, |
| 'Coolant pressure': cool_press, |
| 'lub oil temp': oil_temp, |
| 'Coolant temp': cool_temp |
| }]) |
|
|
| st.write(input_frame) |
|
|
| if st.button("Predict"): |
| pred = model_instance.predict(input_frame) |
| prob = model_instance.predict_proba(input_frame) |
|
|
| if pred[0] == 1: |
| st.error("Faulty Engine") |
| else: |
| st.success("Normal Engine") |
|
|
| st.write(f"Normal: {prob[0][0]:.2f}") |
| st.write(f"Faulty: {prob[0][1]:.2f}") |
|
|