A modular sandbox for experimenting with active learning algorithms. Each algorithm lives in lib/ as a standalone module, and run.py provides a shared testbed with synthetic data and embedding visualisation.
project/
├── lib/
│ ├── __init__.py # register algorithms here
│ ├── max_herding.py # MaxHerding (Bae et al., ECCV 2024)
│ ├── prob_cover.py # ProbCover (Yehuda et al., NeurIPS 2022)
│ └── ... # add new algorithms alongside
└── run.py # synthetic data + algorithm selection + visualisation
pip install numpy pandas scikit-learn matplotlibpython run.pyOutputs selection logs to the console and saves .png.
run.py builds a feature pool without requiring any real dataset:
- 100 samples drawn from 4 Gaussian clusters in 64-D space (centre spread
~2.0, within-cluster std0.35) - All vectors L2-normalised onto the unit hypersphere, mimicking self-supervised features
- 50 samples randomly designated as the initial labelled set; the rest form the unlabelled pool
- δ is hyperparameter of ProbCover — tune it to match the scale of your feature space
Swap in your own feature file to run on real data — the rest of the pipeline stays the same.
![]() |
![]() |
|---|

