Skip to content

Repository files navigation

Course-Drop Prediction

Python Package Manager Interactive Report Status

This repository contains the project submission for the Introduction to Machine Learning course within the Digital Science for High-Tech program (Department of Engineering) at Tel Aviv University (Spring 2026). The project applies the CRISP-DM methodology to predict the probability that a B2B course registration will be cancelled (Dropped_Course) prior to the course start date. The official guidelines and grading criteria are detailed in the project instructions.

Quick Navigation

Project Overview

The prediction task is structured as a future-window forecasting problem. The dataset represents historical course bookings, where the validation and test sets are chronologically separated from the training data.

Technical Summary

  • Categorical Normalization: Consolidated 2,670 raw categorical levels (containing typographic variations, casing noise, and special characters) into 201 clean levels.
  • Validation Strategy: Used adversarial validation to identify temporal and distribution drift between the training and test sets (adversarial AUC of 0.935). Consequently, a chronological split (training on 2015-2016, validating on 2017) was used instead of random cross-validation.
  • Feature Engineering: Formulated domain-specific indicators including cancellation histories (prev_drop_rate), lab assignment matches (got_requested_lab), group composition features, and linear time indices (days_since_epoch). High-cardinality identifiers (Agent, Country, Company) were represented using frequency encoding.
  • Model Blend: Evaluated Logistic Regression (AUC 0.881), Multi-Layer Perceptron (AUC 0.877), and gradient boosted tree architectures. The final pipeline implements a rank-average ensemble of XGBoost, LightGBM, and CatBoost (validation AUC of 0.9159, Average Precision of 0.897).
  • Submission Details: The current scored submission achieves a pre-submission test AUC score of 0.889314.

Repository Structure

Setup and Execution

The project requires Python 3.13 and uses uv for dependency management.

Environment Setup

Sync the dependencies and build the virtual environment:

uv sync

Running the Notebook

Marimo version:

uv run marimo edit notebook.py

Jupyter version:

uv run --with jupyter jupyter notebook notebook.ipynb

Running the Pipeline

To run a dry-run check of the pipeline without writing predictions:

uv run python pipeline.py

To run the pipeline and output a prediction file:

uv run python pipeline.py --write --out data/tmp_submission.csv

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages