| name | ce-pipeline-builder |
| description | Build CE-first end-to-end pipelines using WrapCalibratedExplainer with fit, calibrate, and explain or predict sequencing.
|
CE Pipeline Builder
You are implementing a CE-first pipeline. Load references/ce-first-policy.md
for the full policy text. Non-negotiable invariants are repeated inline below
for quick reference.
Mandatory CE-First Checklist (enforce in order)
- Library check — if
calibrated_explanations is not importable, fail fast:
pip install calibrated-explanations
- Wrapper — always use
WrapCalibratedExplainer. Never invent a new wrapper
class; never use CalibratedExplainer directly in user-facing code.
- Fit —
explainer.fit(x_proper, y_proper).
Assert explainer.fitted is True before proceeding.
- Calibrate —
explainer.calibrate(x_cal, y_cal).
Assert explainer.calibrated is True before proceeding.
- Explain (standard) —
explainer.explain_factual(X) or
explainer.explore_alternatives(X).
- Explain (guarded / in-distribution) — when higher security or
in-distribution filtering is needed, use
explainer.explain_guarded_factual(X)
or explainer.explore_guarded_alternatives(X) instead of the standard paths.
Also use when rule conditions of the form x < feature <= y are needed, since
the guarded APIs support this natively.
- Conjunctions —
explanations.add_conjunctions(...) or
explanations[idx].add_conjunctions(...).
- Narratives & plots —
.to_narrative(output_format=...) and .plot(...).
- Calibrated by default — never return uncalibrated outputs unless
the user has explicitly requested them.
Minimal Working Skeleton
Adapt the task type (binary / multiclass / regression) based on the user's
data and model. Choose from the three templates below:
Binary classification
from __future__ import annotations
import numpy as np
from calibrated_explanations import WrapCalibratedExplainer
explainer = WrapCalibratedExplainer(model)
explainer.fit(x_proper, y_proper)
assert explainer.fitted is True
explainer.calibrate(x_cal, y_cal)
assert explainer.calibrated is True
explanations = explainer.explain_factual(X_query)
explanations.add_conjunctions(max_rule_size=3)
print(explanations[0].to_narrative())
explanations[0].plot()
Multiclass classification
Same scaffold as binary. The explain_factual call returns one explanation
object per query instance, with per-class calibrated probabilities available in
explanations[i].prediction["__full_probabilities__"].
Regression (percentile intervals)
explainer = WrapCalibratedExplainer(reg_model)
explainer.fit(x_proper, y_proper)
assert explainer.fitted is True
explainer.calibrate(x_cal, y_cal)
assert explainer.calibrated is True
explanations = explainer.explain_factual(X_query, low_high_percentiles=(10, 90))
Regression (thresholded / probabilistic)
explanations = explainer.explain_factual(X_query, threshold=my_threshold)
Using ce_agent_utils helpers
Prefer the validated helpers from src/calibrated_explanations/ce_agent_utils.py
for end-to-end pipelines in agent code:
from calibrated_explanations.ce_agent_utils import (
ensure_ce_first_wrapper,
fit_and_calibrate,
explain_and_narrate,
wrap_and_explain,
)
explanations = wrap_and_explain(
model, x_proper, y_proper, x_cal, y_cal, X_query
)
Decision: explain_factual vs explain_guarded_factual
| Use case | API to use |
|---|
| Standard inference | explain_factual / explore_alternatives |
| Production / unknown input distribution | explain_guarded_factual / explore_guarded_alternatives |
| Explicit in-distribution filtering required | explain_guarded_factual |
Guarded variants apply ADR-032 semantics — see references/adr-032-guarded-semantics.md.
Data Split Rules
x_proper / y_proper and x_cal / y_cal must not overlap.
- Typical split: 60% proper training, 20% calibration, 20% test. Adjust based on
calibration data needs (larger calibration → tighter intervals).
- Never reuse training data for calibration.
Out of Scope
This skill does NOT:
- Train or tune the underlying model (use your usual scikit-learn workflow).
- Generate plots or visualizations beyond
.plot() invocation (see ce-plotspec-author).
- Cover the serialization / persistence of calibrators (see
ce-serializer-impl).
- Add new plugins or modify
core/ (see ce-plugin-scaffold).
Evaluation Checklist (self-verify before returning)