Quickstart

This guide demonstrates postprocessing a trained model to satisfy a fairness constraint.

Minimal example

import numpy as np
from sklearn.linear_model import LogisticRegression
from error_parity import RelaxedThresholdOptimizer

# Assume X, y, group are numpy arrays
# group must be encoded as integers 0..G-1
model = LogisticRegression().fit(X, y)

fair_clf = RelaxedThresholdOptimizer(
    predictor=lambda X: model.predict_proba(X)[:, -1],
    constraint="equalized_odds",
    tolerance=0.05,
)

fair_clf.fit(X=X, y=y, group=group)
y_pred = fair_clf(X=X_test, group=group_test)

Notes

  • group indexing must be contiguous starting at 0. If np.max(group) > n_groups-1, a ValueError is raised.

  • For callable predictors, pass the callable directly as predictor. For scikit-learn API, pass a lambda to predict_proba or decision_function as appropriate.

  • Use tolerance=0.0 for strict parity; higher tolerance allows more disparity.

Next steps