lir.algorithms.kde module

class lir.algorithms.kde.KDECalibrator(bandwidth: Callable | str | float | tuple[float, float] | None = None)[source]

Bases: Transformer

Calculate LR from a score, belonging to one of two distributions using KDE.

Calculates a likelihood ratio of a score value, provided it is from one of two distributions. Uses kernel density estimation (KDE) for interpolation.

Parameters:

bandwidth (Callable | str | float | tuple[float, float] | None, optional) – Bandwidth specification for KDE.

apply(instances: InstanceData) LLRData[source]

Provide calibrated LLRs as output.

Parameters:

instances (InstanceData) – Instances to calibrate.

Returns:

Calibrated log-likelihood-ratio data.

Return type:

LLRData

static bandwidth_silverman(X: ndarray, y: ndarray) tuple[float, float][source]

Estimate bandwidths using Silverman’s rule of thumb.

Parameters:
  • X (np.ndarray) – Score array.

  • y (np.ndarray) – Label array.

Returns:

Bandwidth for class 0 and class 1.

Return type:

tuple[float, float]

fit(instances: InstanceData) Self[source]

Fit the KDE model on the data.

Parameters:

instances (InstanceData) – Training instances.

Returns:

Fitted calibrator.

Return type:

Self

lir.algorithms.kde.compensate_and_remove_neginf_inf(log_odds: ndarray, y: ndarray) tuple[ndarray, ndarray, float, float][source]

Remove infinite log-odds values and compute compensation factors.

Parameters:
  • log_odds (np.ndarray) – Array of log-odds.

  • y (np.ndarray) – Array of labels.

Returns:

Finite log-odds, corresponding labels, numerator compensator, and denominator compensator.

Return type:

tuple[np.ndarray, np.ndarray, float, float]

lir.algorithms.kde.parse_bandwidth(bandwidth: Callable | str | float | tuple[float, float] | None) Callable[[Any, Any], tuple[float, float]][source]

Parse and return the corresponding bandwidth strategy based on input type.

Returns bandwidth as a tuple of two (optional) floats. Extrapolates a single bandwidth.

Parameters:

bandwidth (Callable | str | float | tuple[float, float] | None) – Bandwidth specification.

Returns:

Callable that computes bandwidths for class 0 and class 1.

Return type:

Callable[[Any, Any], tuple[float, float]]