Workflows#
Prediction#
The prediction pipeline loads and preprocesses data, fits the selected classifier or regressor, and evaluates training, validation, and test rows. An illustrative use is comparing a linear baseline with a nonlinear model on a credit classification dataset.
python -m src.tabstruct.experiment.run_experiment \
--pipeline prediction \
--task classification \
--model lr \
--dataset credit-g \
--device cpu \
--save_model \
--tags tutorial-prediction
For regression, set --task regression and choose a regression dataset
supported by TabCamel. lr selects LinearRegression for regression and
LogisticRegression for classification. Regression metrics are restored to
the original target units. See Evaluation for metric keys.
Generation#
A generation run fits a model on the training split, generates synthetic rows,
restores original column names and values, and writes synthetic_samples.csv.
An illustrative use is producing a shareable research table, then checking
whether relationships among columns survive generation.
python -m src.tabstruct.experiment.run_experiment \
--pipeline generation \
--task classification \
--model smote \
--dataset credit-g \
--device cpu \
--generation_only \
--generation_ratio 1 \
--tags tutorial-generation
--generation_num_samples selects an explicit count. Otherwise the count is
int(processed_training_rows * generation_ratio). Classification defaults
to stratified class proportions; --generation_mode uniform requests equal
class proportions through the shared generation strategy. Individual adapters
may implement class control differently.
Use --task unsupervision for generation without a designated target, or
--task regression for a continuous target. Check the chosen adapter’s task
and dependency constraints in Models Reference.
CSV evaluation#
Run the generation evaluation script with the path produced above:
bash docs/tutorial/example_scripts/generation/eval.sh \
logs/<configured-project>/<run-id>/synthetic_samples.csv
This skips generator fitting and enables the structural evaluator. Density, privacy, and structure use separate preprocessing views fitted from the real training data. Evaluation split behavior is described in Evaluation.
For online provenance lookup, omit --disable_synthetic_data_validation and
use a generated CSV whose run exists in the configured W&B project. Alternatively,
--eval_only --generator_tags tutorial-generation can resolve a generated
path from W&B when no CSV or checkpoint path is supplied. Keep the dataset,
split sizes, and split IDs identical. Recorded paths refer to local files;
lookup does not download artifacts from another machine.
Checkpoint lifecycle#
--save_model writes a pickle wrapper and logs best_model_path. Restore
it with --eval_only --saved_checkpoint_path PATH using the same task,
dataset, preprocessing, and splits. With --use_saved_checkpoint instead
of --eval_only, the loaded wrapper enters the fitting workflow; whether
this resumes training is adapter-specific.
The shared helper treats knn, smote, and tabebm as methods that keep
reference data. Their saved pickle contains a marker rather than a fitted
wrapper, and evaluation reconstructs them from training data. For SMOTE,
prefer saving and evaluating its generated CSV.
--checkpoint_tags TAG with --eval_only or --use_saved_checkpoint
can resolve best_model_path from a finished W&B run. A generation run must
choose either a synthetic CSV or a generator checkpoint.
TabFORGE adapters#
Both pipelines register --model tabforge as an adapter to the standalone
machine-learning package. Obtain a compatible TabFORGE distribution separately
and install it in the same environment; it is not a declared TabStruct
dependency. Confirm that it exports the required estimators before launching:
python -c "from tabforge import TabFORGEClassifier, TabFORGEGenerator"
python -m src.tabstruct.experiment.run_experiment \
--pipeline prediction \
--task classification \
--model tabforge \
--dataset credit-g \
--model_specific_preprocessing \
--save_model \
--tags tutorial-tabforge
The PyPI project named tabforge is a LaTeX template tool and does not supply these machine-learning estimators.
The adapter uses pretrained initialization by default, with feature-encoder
and backbone downloads managed by the standalone package. Choose hardware
appropriate to that model. --max_steps_tentative and
--batch_size_tentative map into adapter training configuration. Adapter
model_params are nested Python configuration groups; the CLI does not
accept a JSON --model_params flag.
Hyperparameter tuning#
Optuna selects the model’s search space and evaluates repeated split IDs. Choose a selection metric produced by the pipeline:
python -m src.tabstruct.experiment.run_experiment \
--pipeline prediction \
--task classification \
--model lr \
--dataset credit-g \
--device cpu \
--enable_optuna \
--optuna_trial 3 \
--num_repeats 2 \
--num_cv_folds 1 \
--tune_max_workers 1 \
--metric_model_selection balanced_accuracy \
--tags tutorial-tuning
The tuning objective uses validation metrics, and tuning enables
full_split_eval. --num_repeats and --num_cv_folds expand tuning
runs; a normal invocation runs only its specified test_id and valid_id.
The current runner has a two-hour single-run timeout and a two-hour study
budget. Some adapters do not implement an Optuna search space.