This repository contains the implementation of our paper, “Generating Realistic Time-Series Counterfactuals via Diffusion-Guided Sampling”, accepted to the ECML PKDD 2026 Research Track.
High-level workflow:
- Train a classifier on a dataset (
train_classifier.py) - Train a diffusion model on the training split (
train_diffusion.py) - Generate counterfactuals for the test split (
run_generate_cf.py) - Evaluate counterfactual quality and save metrics/plots (
run_evaluate.py)
Create an environment (recommended) and install dependencies:
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtNotes:
- PyTorch is required (
torch). Install a CUDA build if you want GPU acceleration.
All commands below assume you run them from the repo root.
python train_classifier.py --config configs/coffee.yamlpython train_diffusion.py --config configs/coffee.yamlThis loads classifier.pt and diffusion.pt from output.load_root/run_name/ and writes results to output.root/run_name/.
python run_generate_cf.py --config configs/coffee.yamlpython run_evaluate.py --config configs/coffee.yamlrun_pipeline.py will:
- train classifier if missing
- train diffusion if missing
- generate counterfactuals
- evaluate
python run_pipeline.py --config configs/coffee.yamlThere are a few convenience scripts to run multiple datasets / hyperparameters:
run_multi.pyrun_multi_parallel.pyrun_multi_grid_search.pygrid_search.py
The config configs/multi_ucr.yaml provides a template that:
- starts from a
base_config - iterates
datasets:(different UCR datasets)