File size: 3,831 Bytes
fefeab0
 
 
 
 
 
 
 
 
 
 
 
ef08708
fefeab0
 
 
debbf84
 
 
 
 
 
d2e033b
debbf84
fefeab0
d2e033b
 
 
debbf84
fefeab0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78

import streamlit as st
import pandas as pd
from huggingface_hub import hf_hub_download
import joblib
import os


# Assuming config.py is in the same directory or accessible via PYTHONPATH
# from config import HF_REPO_ID # If you want to load HF_REPO_ID from config.py

# For now, hardcode the repo ID as it's defined elsewhere in the notebook
HF_REPO_ID = "CodingBuddy/Predictive-maintenance"

# Download and load the model
try:
    #model_path = hf_hub_download(repo_id=HF_REPO_ID, filename="Predictive_maintenance_project_best_model.joblib", repo_type="model")
    #hf_hub_download('https://huggingface.co/CodingBuddy/Predictive-maintenance/blob/main/Predictive_maintenance_best_model.joblib')
    #model = joblib.load(model_path)
    
    #https://huggingface.co/CodingBuddy/Predictive-maintenance/blob/main/Predictive_maintenance_best_model.joblib
    # using above path , download the hf model
    model_path_downloaded  =  hf_hub_download(repo_id=HF_REPO_ID, filename="Predictive_maintenance_best_model.joblib", repo_type="model")
    model = joblib.load(model_path_downloaded)
    st.success("Model loaded successfully!")
    #https://huggingface.co/CodingBuddy/Predictive-maintenance/blob/main/Predictive_maintenance_best_model.joblib
    #https://huggingface.co/CodingBuddy/Predictive-maintenance/resolve/main/Predictive_maintenance_project_best_model.joblib
    #https://huggingface.co/CodingBuddy/Predictive-maintenance/resolve/main/blob/main/Predictive_maintenance_project_best_model.joblib

except Exception as e:
    st.error(f"Error loading model: {e}")
    st.stop()

# Streamlit UI for Predictive Maintenance
st.title("Engine Predictive Maintenance App")
st.write("""
This application predicts whether an engine requires maintenance based on its sensor readings.
Please enter the engine sensor data below to get a prediction.
""")

# User input
st.header("Engine Sensor Data Input")

Engine_RPM = st.number_input("Engine RPM (Revolutions per Minute)", min_value=0.0, max_value=10000.0, value=700.0, step=1.0)
Lub_oil_pressure = st.number_input("Lubricating Oil Pressure (bar/kPa)", min_value=0.0, max_value=50.0, value=2.493592, step=0.000001, format="%.6f")
Fuel_pressure = st.number_input("Fuel Pressure (bar/kPa)", min_value=0.0, max_value=50.0, value=11.790927, step=0.000001, format="%.6f")
Coolant_pressure = st.number_input("Coolant Pressure (bar/kPa)", min_value=0.0, max_value=50.0, value=3.178981, step=0.000001, format="%.6f")
lub_oil_temp = st.number_input("Lubricating Oil Temperature (°C)", min_value=0.0, max_value=200.0, value=84.144163, step=0.000001, format="%.6f")
Coolant_temp = st.number_input("Coolant Temperature (°C)", min_value=0.0, max_value=200.0, value=81.632187, step=0.000001, format="%.6f")

# 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]
})


if st.button("Predict Engine Condition"):
    try:
        # Ensure the model is loaded before predicting
        if 'model' in locals() and model is not None:
            prediction = model.predict(input_data)[0]
            # Assuming 0 = Normal, 1 = Requires Maintenance (Faulty)
            result = "Requires Maintenance (Faulty)" if prediction == 1 else "Operating Normally"
            st.subheader("Prediction Result:")
            if prediction == 1:
                st.error(f"The model predicts: **{result}**")
            else:
                st.success(f"The model predicts: **{result}**")
        else:
            st.warning("Model is not loaded. Please check the model loading process.")
    except Exception as e:
        st.error(f"An error occurred during prediction: {e}")