"Use Fairlearn ThresholdOptimizer and threshold-optimizer plots to
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill postprocessing --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Postprocessing?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-postprocessing)More formats (shields.io, HTML) on the badges page.
---
name: postprocessing
description: "Use Fairlearn ThresholdOptimizer and threshold-optimizer plots to
adjust trained predictors under group fairness constraints."
disable-model-invocation: true
metadata:
disco-role: operating
license: MIT
---
# Fairlearn postprocessing
Use this sub-skill when the task asks to adjust a trained predictor's scores or predictions with group-specific thresholds: `ThresholdOptimizer`, `plot_threshold_optimizer`, `prefit`, `predict_method`, `tol`, demographic parity, equalized odds, false/true positive/negative rate parity, or threshold interpolation dictionaries.
## Quick workflow
1. Choose or fit a base estimator that exposes a useful score method: `predict_proba`, `decision_function`, or `predict`.
2. Create `ThresholdOptimizer(estimator=..., constraints=..., objective=..., predict_method=...)`.
3. Set `prefit=True` only when the estimator is already fitted and will not be cloned by cross-validation.
4. Fit the threshold optimizer with `sensitive_features=...`.
5. Predict with the same sensitive-feature grouping and, when deterministic output matters, pass `random_state` to `predict`.
6. Route to `../assessment/` to compare subgroup metrics before and after postprocessing.
## Read these references
- [`references/threshold-optimizer-workflows.md`](references/threshold-optimizer-workflows.md) for constructor options, constraints/objectives, `prefit`, score-method choice, plotting, and evaluation patterns.
- [`references/troubleshooting.md`](references/troubleshooting.md) for missing base estimators, invalid constraint/objective combinations, plotting errors, `prefit` warnings, and data-layout failures.
- [`scripts/smoke_threshold_optimizer.py`](scripts/smoke_threshold_optimizer.py) for a tiny CPU-only synthetic smoke check with optional plotting.
## Core APIs to recognize
- `ThresholdOptimizer(*, estimator=None, constraints="demographic_parity", objective="accuracy_score", grid_size=1000, flip=False, prefit=False, predict_method="auto", tol=None)`
- `ThresholdOptimizer.fit(X, y, *, sensitive_features, **kwargs)`
- `ThresholdOptimizer.predict(X, *, sensitive_features, random_state=None)`
- `plot_threshold_optimizer(threshold_optimizer, ax=None, show_plot=True)`
## Boundary rules
- This sub-skill owns post-fit threshold/interpolation mitigation. Use `../reductions/` for fairness-constrained retraining and `../preprocessing/` for feature transformation.
- Use `../assessment/` for grouped metrics and model-comparison plots. `plot_threshold_optimizer` visualizes the postprocessor internals, not a full fairness report.
- Use `../installation/` or root troubleshooting when matplotlib is missing.
- Use `../adversarial/` for neural adversarial fairness; it is not a threshold optimizer.
## Operating rules
- `y` must be binary for `ThresholdOptimizer` in this source.
- `sensitive_features` are required for both `fit` and `predict`.
- Prefer `predict_proba` or `decision_function` over hard-label `predict` when meaningful scores are available.
- `equalized_odds` does not support `tol` relaxation in the inspected source.
- `prefit=True` is unsafe with estimator cloning workflows such as `cross_val_score` or `GridSearchCV`; use `prefit=False` there.
- Postprocessing can change output randomness. Use `random_state` in `predict` for reproducible reports.
## Fast validation
Run:
```bash
python sub-skills/postprocessing/scripts/smoke_threshold_optimizer.py
```
Run plot coverage in a matplotlib-capable environment:
```bash
python sub-skills/postprocessing/scripts/smoke_threshold_optimizer.py --plot --output-dir /tmp/fairlearn-threshold-plots
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!