Skip to content

check_class_proba_prediction_bounds

yohou.testing.class_proba.check_class_proba_prediction_bounds(forecaster, y_test, X_actual_test=None)

Check all probability values are in [0, 1].

Parameters

Name Type Description Default
forecaster BaseClassProbaForecaster

Fitted class-probability forecaster instance.

required
y_test DataFrame

Test target data.

required
X_actual_test DataFrame or None

Test features.

None

Raises

Type Description
AssertionError

If any probability value is outside [0, 1].

Source Code

Show/Hide source
def check_class_proba_prediction_bounds(
    forecaster, y_test: pl.DataFrame, X_actual_test: pl.DataFrame | None = None
) -> None:
    """Check all probability values are in [0, 1].

    Parameters
    ----------
    forecaster : BaseClassProbaForecaster
        Fitted class-probability forecaster instance.
    y_test : pl.DataFrame
        Test target data.
    X_actual_test : pl.DataFrame or None, default=None
        Test features.

    Raises
    ------
    AssertionError
        If any probability value is outside [0, 1].

    """
    forecasting_horizon = min(3, len(y_test))
    y_pred = forecaster.predict_class_proba(forecasting_horizon=forecasting_horizon)

    proba_cols = [col for col in y_pred.columns if "_proba_" in col]
    assert len(proba_cols) > 0, "No probability columns found"

    for col in proba_cols:
        values = y_pred[col]
        min_val = values.min()
        max_val = values.max()
        assert min_val >= 0.0, f"Probability column {col} has negative values (min={min_val})"
        assert max_val <= 1.0, f"Probability column {col} has values > 1 (max={max_val})"