This repository contains a machine learning project aimed at predicting the Remaining Useful Life (RUL) of turbofan engines using the PHM08 Prognostics Data Challenge Dataset provided by NASA. Accurate RUL Estimation can enable proactive maintenance, reduce operational costs, and prevent unexpected failures.
The PHM08 dataset includes:
- 218 engine units: Each representing a unique turbofan engine.
- 21 sensor measurements: Including fan speed, pressure, temperature, and vibration parameters.
- Degradation trajectories: Each engine's data spans from normal operation to failure.
- Training and test sets: Provided for model development and evaluation.
Source: PHM08 Challenge Data Set
-
Clone the repository:
git clone https://github.com/palscruz23/rul-estimation.git cd rul-estimation -
Install dependencies
pip install -r requirements.txt -
Run RUL using machine learning methods
Change directory to machine-learning folder
cd machine-learningOpen streamlit app for the RUL Estimation visualization
streamlit run src/Main.py -
Run RUL using deep learning methods (RNN, LSTM, Seq2Seq, Informer models)
Change directory to deep-learning folder
cd deep-learningStart the FastAPI server using Uvicorn:
uvicorn service.service:app --reload --host 127.0.0.1 --port 8000Run inference from
service/predict.pyscript.python -m service.predict(Optional) To check ML flow experiments, run then open
http://127.0.0.1:5000/in browser.cd src mlflow ui --port 5000
- Data Exploration
- Load training and test data
- Utilise unsupervised learning (K-means) to get operational parameter clusters
- Data Processing
- Split data set into training and validation sets
- Apply Standard Scaler to normalise different sensor measurements
- Remaining Useful Life Estimation
- Construct Asset Health Indicator
- Perform Linear Regression on each sensor to get trendability
- Perform sensor fusion to develop health indicator
- Develop Residual-similarity model using Degree-2 polynomial fit
- Plot health indicator of validation engine from 5% to 100% operating life
[1] MATLAB Similarity-Based Remaining Useful Life Estimation
[2] A similarity-based prognostics approach for Remaining Useful Life estimation of engineered systems
- Data Processing
- Load training data
- Split data set into training, validation and test sets
- Perform scaling using StandardScaler
- Create PHM08RULDataset dataset class
- Remaining Useful Life Estimation
- Initiate ML flow experiment
- Create model classes for RNN, LSTM, Seq2Seq and Informer
- Prepare training and validation loops
- Perform grid search for hyperparameter tuning
- Select best model
- Perform bias vs variance analysis
- Perform Estimation on test data.
[1] Recurrent neural networks for remaining useful life estimation
[2] Recurrent Neural Network (RNN)
[4] Understanding the Seq2Seq Model
[5] Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting
This repository is licensed under the MIT License. See the LICENSE file for more details.

