Calibration API

qca.calibrate_crisp(df, value_col, threshold, out_col=None, direction='ge', *, allow_nan=True)[source]

Calibrate a numeric column to crisp-set membership.

Parameters:
  • df (DataFrame) – Source DataFrame. The original object is not modified.

  • value_col (str) – Numeric source column to calibrate.

  • threshold (float) – Cut point used by direction.

  • out_col (str | None) – Output column name. Defaults to "{value_col}_crisp".

  • direction (str) – One of "ge", "gt", "le", or "lt".

  • allow_nan (bool) – If False, missing values in value_col raise ValueError.

Return type:

CrispCalibrationResult

qca.calibrate_piecewise(df, value_col, out_col=None, group_cols=None, quantiles=(0.10, 0.50, 0.90), lower=CALIBRATION_FULL_OUT, upper=CALIBRATION_FULL_IN, min_nonnull=5)[source]

Calibrate a numeric column to fuzzy membership by quantile anchors.

Parameters:
  • df (DataFrame)

  • value_col (str)

  • out_col (str | None)

  • group_cols (Sequence[str] | None)

  • quantiles (tuple[float, float, float])

  • lower (float)

  • upper (float)

  • min_nonnull (int)

Return type:

PiecewiseCalibrationResult

qca.calibrate_logistic(df, value_col, out_col=None, *, full_out=None, crossover=None, full_in=None, anchor_quantiles=(0.05, 0.50, 0.95), mem_full_out=CALIBRATION_FULL_OUT, mem_full_in=CALIBRATION_FULL_IN, min_nonnull=5)[source]

Calibrate a numeric column to fuzzy membership with a logistic curve.

If explicit anchors are omitted, they are estimated from anchor_quantiles over the finite, non-null values in value_col.

Parameters:
  • df (DataFrame)

  • value_col (str)

  • out_col (str | None)

  • full_out (float | None)

  • crossover (float | None)

  • full_in (float | None)

  • anchor_quantiles (tuple[float, float, float])

  • mem_full_out (float)

  • mem_full_in (float)

  • min_nonnull (int)

Return type:

LogisticCalibrationResult

Crisp-set calibration utilities.

class qca.calibration.crisp.CrispCalibrationResult(df, out_col, threshold, direction, n_calibrated, n_in, n_out, n_skipped)[source]

Result returned by calibrate_crisp().

Parameters:
  • df (DataFrame)

  • out_col (str)

  • threshold (float)

  • direction (Literal['ge', 'gt', 'le', 'lt'])

  • n_calibrated (int)

  • n_in (int)

  • n_out (int)

  • n_skipped (int)

qca.calibration.crisp.crisp_calibrate_series(series, threshold, direction='ge')[source]

Convert a numeric series into crisp membership values.

Non-null finite values are mapped to 1.0 or 0.0. Missing values are preserved as NaN so callers can decide whether to drop or inspect them.

Parameters:
  • series (Series)

  • threshold (float)

  • direction (str)

Return type:

Series

Piecewise-linear fuzzy-set calibration.

class qca.calibration.piecewise.PiecewiseAnchor(group_key, p_low, p_mid, p_high, n_total, n_nonnull, is_valid)[source]

Anchor values estimated for one calibration group.

Parameters:
  • group_key (tuple[Any, ...])

  • p_low (float)

  • p_mid (float)

  • p_high (float)

  • n_total (int)

  • n_nonnull (int)

  • is_valid (bool)

class qca.calibration.piecewise.PiecewiseCalibrationResult(df, anchors, out_col, n_calibrated, n_skipped)[source]

Result returned by calibrate_piecewise().

Parameters:
  • df (DataFrame)

  • anchors (list[PiecewiseAnchor])

  • out_col (str)

  • n_calibrated (int)

  • n_skipped (int)

anchors_to_df()[source]

Return anchor metadata as a DataFrame.

Return type:

DataFrame

qca.calibration.piecewise.piecewise_fuzzy_scalar(x, p_low, p_mid, p_high, lower=CALIBRATION_FULL_OUT, upper=CALIBRATION_FULL_IN)[source]

Convert one numeric value into fuzzy membership with linear segments.

Parameters:
  • x (float)

  • p_low (float)

  • p_mid (float)

  • p_high (float)

  • lower (float)

  • upper (float)

Return type:

float

qca.calibration.piecewise.piecewise_fuzzy_series(series, p_low, p_mid, p_high, lower=CALIBRATION_FULL_OUT, upper=CALIBRATION_FULL_IN)[source]

Convert a Series into fuzzy membership with linear segments.

Parameters:
  • series (Series)

  • p_low (float)

  • p_mid (float)

  • p_high (float)

  • lower (float)

  • upper (float)

Return type:

Series

Logistic fuzzy-set calibration.

class qca.calibration.logistic.LogisticAnchor(full_out, crossover, full_in, slope, intercept, anchor_quantiles=None)[source]

Anchor and curve parameters for logistic calibration.

Parameters:
  • full_out (float)

  • crossover (float)

  • full_in (float)

  • slope (float)

  • intercept (float)

  • anchor_quantiles (tuple[float, float, float] | None)

class qca.calibration.logistic.LogisticCalibrationResult(df, anchor, out_col, n_calibrated, n_skipped)[source]

Result returned by calibrate_logistic().

Parameters:
  • df (DataFrame)

  • anchor (LogisticAnchor)

  • out_col (str)

  • n_calibrated (int)

  • n_skipped (int)

qca.calibration.logistic.logistic_calibrate_series(series, full_out, crossover, full_in, mem_full_out=CALIBRATION_FULL_OUT, mem_full_in=CALIBRATION_FULL_IN)[source]

Convert a Series into fuzzy membership with a logistic curve.

Parameters:
  • series (Series)

  • full_out (float)

  • crossover (float)

  • full_in (float)

  • mem_full_out (float)

  • mem_full_in (float)

Return type:

tuple[Series, LogisticAnchor]