Skip to content
z-tempestPublic

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JetBoost cover image

JetBoost

An interactive web app that visualizes jet engine health and remaining useful life (RUL) predictions from a gradient boosting model trained on the NASA C-MAPSS dataset along with XGBoost models across all 4 subsets. Exploratory data analysis and feature engineering notebooks are present here, the dataset and models or public on Hugging Face.

JetBoost web app preview

For the modeling work behind it, see the technical report: JetBoost | PCA For Latent Feature Modeling. Here I explore the use of PCA for latent feature modeling and engineering for use in gradient boosting models using this dataset.

Project structure

.
├── api/src/api/        # FastAPI inference service (inference.py)
├── web/src/            # Web app
│   └── scripts/        # prepare_fleet_data.py
├── ml/models/          # Trained models (e.g. FD004GBM)
└── data/
    ├── cleaned_data/   # Cleaned test sets used to build the fleet
    └── FE_data/        # Feature-engineered test sets used by the API

Data and models

The datasets and machine learning models are public on hugging face.

Original dataset, its documentation and the feature engineered training data available at: https://huggingface.co/datasets/ZephyrNTempest/C-MAPSS

Machine learning models available at: https://huggingface.co/ZephyrNTempest/JetBoost-GBM

Running the project

The API and the web app run separately, so use two terminals.

1. Start the API

cd api/src/api
fastapi dev inference.py

2. Start the web app

cd web/src
npm install   # first time only
npm run dev

Changing the C-MAPSS subset

The project is set up for one subset at a time (FD001 to FD004). Switching subsets takes two changes, and both must point to the same subset.

1. Update the API

In api/src/api/inference.py, change model_uri to the model for the subset and data_uri to its test data. For example, for FD004:

model_uri = "../../../ml/models/FD004GBM"
data_uri = "../../../data/FE_data/test_FD004"

2. Regenerate the fleet data

From web/src/scripts, run prepare_fleet_data.py with the cleaned test set for the new subset, the output path, and the number of engines to render:

cd web/src/scripts
python3 prepare_fleet_data.py ../../../data/cleaned_data/test_FD004 ../../public/data/fleet.json 100 --contiguous
Argument Description
../../../data/cleaned_data/test_FD004 Cleaned test set for the subset
../../public/data/fleet.json Output file the web app reads
100 Number of engines to render
--contiguous Use engines 1 to N in order instead of a random sample of N

Restart the API and the web app after switching.

Note: These steps are only relevant for running JetBoost locally. The API used for the public web application is hosted as a Hugging Face space at: https://huggingface.co/spaces/ZephyrNTempest/jetboost-api

Dataset

NASA C-MAPSS is a synthetic run-to-failure turbofan dataset generated with MATLAB and Simulink. The dataset files are not included in this repository.

Results

Model JetBoost GBM (S-score) RMSE
FD001 193 11.45
FD002 3894 22.94
FD003 202 11.19
FD004 3145 23.17

License

Released under the MIT License.