Predicts the Remaining Useful Life (RUL) of aircraft turbofan engines using sensor and operational data from the NASA C-MAPSS benchmark dataset. Includes a Plotly Dash dashboard for interactive exploration of sensor degradation and model performance.
Best model: LightGBM + first-n-cycle normalisation + RUL clipping
| Split | MAE | RMSE | R² |
|---|---|---|---|
| Test (80/20 split) | 7.55 cycles | 11.27 cycles | 0.92 |
| Validation (held-out NASA test set) | 11.14 cycles | 15.28 cycles | 0.86 |
Four preprocessing strategies were compared systematically — see the notebook for the full comparison.
Predictive-Maintenance/
├── dataset/ # C-MAPSS train/test/RUL files
├── models/ # Saved LightGBM model files (.joblib)
├── predictive_maintenance.ipynb # Full pipeline: EDA → feature engineering → modelling
├── app.py # Plotly Dash interactive dashboard
├── requirements.txt
└── README.md
100 turbofan engines simulated from healthy state to failure. Each row is one engine cycle.
| Column group | Details |
|---|---|
| Engine ID + cycle | Unique engine identifier and time step |
| Operational settings | 3 columns (altitude, Mach number, throttle) |
| Sensor readings | 21 sensors (temperatures, pressures, speeds, flows) |
| RUL (train only) | Calculated as max_cycle − current_cycle |
7 constant sensors (s1, s5, s6, s10, s16, s18, s19) were identified and dropped.
| Technique | Purpose |
|---|---|
| Min-Max normalisation | Baseline sensor scaling |
| First-n-cycle normalisation | Engine-relative scaling — eliminates inter-engine bias |
| RUL clipping (max = 121) | Reduces noise from early-life cycles, improves convergence |
| Rolling averages | Smooths sensor signal noise |
| Variance threshold | Removes constant/near-constant features |
The comparison across 4 preprocessing strategies shows that first-n-cycle normalisation + RUL clipping generalises best to unseen engines (R² 0.86 vs 0.20 for the baseline).
git clone https://github.com/KonulJ/Predictive-Maintenance.git
cd Predictive-Maintenance
pip install -r requirements.txtDownload the C-MAPSS FD001 dataset from NASA Prognostics Center and place the .txt files in dataset/.
python app.pyThe Dash dashboard opens at http://localhost:8050.
| Concept | Implementation |
|---|---|
| Regression on multivariate time series | LightGBM + XGBoost on 21-sensor sequential data |
| Feature engineering strategy comparison | 4 normalisation + clipping combinations, evaluated on held-out set |
| Overfitting diagnosis | Baseline R² 0.91 (test) → −0.61 (validation); fixed by first-n-cycle normalisation |
| Hyperparameter tuning | GridSearchCV with 5-fold CV across 81 parameter combinations |
| Industrial ML context | NASA benchmark, condition-based maintenance framing |
- Classification model for early-warning risk zones (within 30 cycles of failure)
- LSTM for sequence-aware RUL prediction
- Docker deployment of the Dash dashboard
Built by Konul Jafarova