Spaces:
Runtime error
Runtime error
| import joblib | |
| import pandas as pd | |
| from huggingface_hub import hf_hub_download | |
| import sys | |
| import streamlit as st | |
| import datetime # Added import for datetime | |
| # Initialize model to None | |
| model = None | |
| # Define repository ID and model path in repo | |
| repo_id = "Srinivas1969/dl-capstone-dataset" | |
| path_in_repo = "model/tuned_random_forest.joblib" | |
| # Download the model file | |
| try: | |
| model_path_local = hf_hub_download(repo_id=repo_id, repo_type='dataset', filename=path_in_repo) | |
| # st.write(f"Model downloaded to: {model_path_local}") # For debugging in Streamlit, can be removed | |
| except Exception as e: | |
| st.error(f"Error downloading model from Hugging Face Hub: {e}") | |
| st.error("Please ensure 'HF_TOKEN' is correctly set as an environment variable if the repo is private.") | |
| sys.exit(1) # Exit with an error code | |
| # Load the downloaded model | |
| try: | |
| model = joblib.load(model_path_local) | |
| # st.write("Model loaded successfully.") # For debugging in Streamlit, can be removed | |
| except Exception as e: | |
| st.error(f"Error loading the model: {e}") | |
| sys.exit(1) # Exit with an error code | |
| def predict_engine_condition(engine_rpm, lub_oil_pressure, fuel_pressure, coolant_pressure, lub_oil_temp, coolant_temp): | |
| """ | |
| Predicts the engine condition (0 = Normal, 1 = Faulty) based on input sensor readings. | |
| Args: | |
| engine_rpm (int): The number of revolutions per minute (RPM) of the engine. | |
| lub_oil_pressure (float): The pressure of the lubricating oil in the engine (bar/kPa). | |
| fuel_pressure (float): The pressure at which fuel is supplied to the engine (bar/kPa). | |
| coolant_pressure (float): The pressure of the engine coolant (bar/kPa). | |
| lub_oil_temp (float): The temperature of the lubricating oil (°C). | |
| coolant_temp (float): The temperature of the engine coolant (°C). | |
| Returns: | |
| int: Predicted engine condition (0 for Normal, 1 for Faulty). | |
| """ | |
| # Defensive check: Ensure the model is loaded before making predictions. | |
| if model is None: | |
| raise RuntimeError("Model is not loaded. Cannot make predictions.") | |
| # Create a DataFrame from the input parameters | |
| input_data = pd.DataFrame([[engine_rpm, lub_oil_pressure, fuel_pressure, coolant_pressure, lub_oil_temp, coolant_temp]], | |
| columns=['Engine rpm', 'Lub oil pressure', 'Fuel pressure', 'Coolant pressure', 'lub oil temp', 'Coolant temp']) | |
| # Make prediction | |
| prediction = model.predict(input_data) | |
| return int(prediction[0]) | |
| # Streamlit Interface | |
| st.set_page_config(layout="wide") | |
| st.title('Engine Condition Predictor') | |
| st.write(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')) # Display current date and time | |
| st.write('Enter sensor readings to predict engine condition (0=Normal, 1=Faulty).') | |
| # Input widgets for sensor readings (using ranges from df.describe() and common sense) | |
| with st.sidebar: | |
| st.header("Sensor Readings") | |
| engine_rpm = st.number_input('Engine RPM', min_value=60, max_value=2300, value=791, step=10, help="Revolutions per minute") | |
| lub_oil_pressure = st.number_input('Lub Oil Pressure (bar/kPa)', min_value=0.0, max_value=8.0, value=3.3, step=0.1, format="%.2f") | |
| fuel_pressure = st.number_input('Fuel Pressure (bar/kPa)', min_value=0.0, max_value=22.0, value=6.65, step=0.1, format="%.2f") | |
| coolant_pressure = st.number_input('Coolant Pressure (bar/kPa)', min_value=0.0, max_value=8.0, value=2.33, step=0.1, format="%.2f") | |
| lub_oil_temp = st.number_input('Lub Oil Temperature (°C)', min_value=70.0, max_value=90.0, value=77.64, step=0.1, format="%.2f") | |
| coolant_temp = st.number_input('Coolant Temperature (°C)', min_value=60.0, max_value=200.0, value=78.42, step=0.1, format="%.2f") | |
| if st.button('Predict Engine Condition'): | |
| try: | |
| prediction = predict_engine_condition( | |
| engine_rpm, | |
| lub_oil_pressure, | |
| fuel_pressure, | |
| coolant_pressure, | |
| lub_oil_temp, | |
| coolant_temp | |
| ) | |
| if prediction == 0: | |
| st.success('Predicted Engine Condition: Normal (0)') | |
| else: | |
| st.error('Predicted Engine Condition: Faulty (1)') | |
| st.write("### Input Data:") | |
| st.write(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] | |
| })) | |
| except Exception as e: | |
| st.error(f"An error occurred during prediction: {e}") | |