Skip to content

HugoPierloot/Rocket-Launch-Classification

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rocket Launch Failure Prediction

Exploratory Research: Main Failure Factors of Rocket Launches and Their Impacts

Author: Hugo Pierloot
Supervisor: Stefan Creemers
University: Louvain School of Management - UCLouvain
Academic year: 2025–2026
Degree: Master [120] in Business Engineering

Table of Contents

  1. Project Purpose
  2. Research Question
  3. Repository Structure
  4. Data
  5. Environment Setup
  6. Running Order

1. Project Purpose

This project builds and interprets machine learning classification models to predict whether a rocket launch will succeed or fail, using historical launch data from 1957 to 2021.

The main value of this project is interpretability: identifying which features (rocket experience, organisation track record, launch site maturity, physical specs) drive failure risk, and quantifying their relative importance. This is achieved through SHAP (SHapley Additive exPlanations) analysis applied to the best-performing models.

The core challenge is class imbalance: 91.2% of launches in the dataset are successes, creating a 10.4:1 imbalance ratio. This necessitates specialised techniques (SMOTE, cost-sensitive learning, ensemble methods) and metrics (F1, F2, AUC-PR, MCC) rather than plain accuracy.

2. Research Question

What are the main failure factors of rocket launches? What are their impacts on the probability of a flight succeeding?

3. Repository Structure

root/
    data/
        inputs/
            raw/                        <= Original CSV files (never modified)
                Companies.csv
                Configs.csv
                Families.csv
                Launches.csv
                Locations.csv
                Missions.csv
             clean/                      <= Generated by the pipeline
                final_data.csv          <= Joined + cleaned dataset (all 6 tables)
                model_data.csv          <= Feature-engineered + correlation-pruned
        outputs/
            evaluation_reports/         <= CSV reports per model run
                sensitivity_grid_*.csv       <= Full grid results (one row per run × model)
                sensitivity_best_configs_*.csv <= Best params per model
                best_configs_*.csv           <= Best configs from one-shot runs
                 shap_report.csv              <= Mean |SHAP| per feature per model
                ermutation_importance_*.csv <= Permutation importance with 95% CI
            figures/
                analytics/              <= EDA charts (distributions, correlations, KPIs)
                    01_correlation_matrix.png
                    02_success_failure_over_time.png
                    ...
                sensitivity/            <= One subfolder per training run
                    run{N}/
                        cm_{model}.png           <= Confusion matrices
                        roc_curves_all_models.png
                        pr_curves_all_models.png
                        metrics_comparison_all_models.png
                        shap/
                            shap_beeswarm_{model}.png
                            shap_importance_{model}.png
                            shap_waterfall_{model}_failure_{N}.png
                            shap_dependence_{model}_{feature}.png
                            shap_importance_comparison_all_models.png
                            permutation_importance_{model}.png
                raw/                    <= Raw data distribution plots
                    {table}_distributions_raw.png
            summaries/                  <= Descriptive statistics text files
                raw_descriptive_statistics.txt
                clean_descriptive_statistics.txt│
    main/                               <= All source code
        constants.py                    <= All paths and column name constants
        loaders.py                      <= Raw and clean data loaders
        cleaning.py                     <= ETL pipeline (cleaning + joining all tables)
        feature_engineering.py          <= Feature creation + correlation pruning
        splitter.py                     <= Temporal train/test split + SMOTE
        sensitivity_analysis.py         <= One-shot and grid sweep runner
        analytics.ipynb                 <= EDA (cleaning, correlations, KPI charts, feature engineering)
        main.ipynb                      <= Model training entry point (one-shot / grid)
        models/
            baseline.py                 <= MajorityClassifier, PriorRateClassifier
            tree_models.py              <= RandomForest, XGBoost, AdaBoost, RUSBoost
            evaluation.py               <= Metrics computation + all evaluation charts
            train.py                    <= Master training runner (called by sensitivity_analysis)
            explainability.py           <= SHAP analysis + permutation importance

4. Data

Source

The dataset is the Rocket Launch Industry dataset published on Kaggle by Maciej Krzysik (2022):
https://www.kaggle.com/datasets/maccaroo/rocket-launch-industry

The 6 raw CSV files

  • Launches.csv: One row per launch event.
  • Configs.csv: Rocket configuration technical specs.
  • Families.csv: Rocket family aggregated stats.
  • Companies.csv: Organisations and ownership.
  • Locations.csv: Launch site geospatial data.
  • Missions.csv: Payload missions per launch.

Data flow

Raw CSVs  
=>  cleaning.py (by using analytics.ipynb)  =>  final_data.csv  
=>  feature_engineering.py (by using analytics.ipynb)  =>  model_data.csv
=> splitter.py (train/test + SMOTE by using main.ipynb)
=> models/ (training + evaluation + SHAP by using main.ipynb)

The pipeline is designed to be fully reproducible from the originals CSV.

Target variable

launch_success_binary is derived from Launch Status:

  • 1 = Success
  • 0 = Failure, Partial Failure, or Prelaunch Failure

5. Environment Setup

Requirements

Python 3.13.2 is required. All dependencies are pinned in requirements.txt.

# Create and activate a virtual environment
python -m venv venv
venv\Scripts\activate        # Windows
source venv/bin/activate     # macOS / Linux

# Install all dependencies
pip install -r requirements.txt

Working directory

All scripts use relative paths anchored to constants.py. Always run notebooks.

6. Running Order

Run the steps in this exact order. Each step depends on the outputs of the previous one.

Step 1 => Step 2 => Step 3 => Step 4
  • Step 1 - analytics.ipynb - raw data sections
  • Step 2 - analytics.ipynb - clean data sections
  • Step 3 - analytics.ipynb - feature engineering sections
  • Step 4.1 - main.ipynb - One-shot configuration, without SHAP
  • Step 4.2 - main.ipynb - One-shot configuration, with SHAP
  • Step 4.3 - main.ipynb - Sensitivity grid - no SHAP (hyperparameter search)
  • Step 4.4 - main.ipynb - Sensitivity grid - with SHAP (final interpretability run with the best configs)

About

Rocket Failure Analysis - Python classification and SHAP for interpretability - Rocket Launch Industry dataset

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors