Skip to content

check_scorer_coverage_rate_subselection

yohou.testing.scorer.check_scorer_coverage_rate_subselection(scorer, y_truth, y_pred_interval, coverage_rates)

Check coverage parameter filters interval predictions correctly.

Only applicable for interval scorers.

Parameters

Name Type Description Default
scorer BaseScorer

Interval scorer instance

required
y_truth DataFrame

Ground truth

required
y_pred_interval DataFrame

Interval predictions with coverage_rate column

required
coverage_rates list of float

Coverage rates to filter

required

Raises

Type Description
AssertionError

If coverage filtering fails

Source Code

Show/Hide source
def check_scorer_coverage_rate_subselection(
    scorer,
    y_truth: pl.DataFrame,
    y_pred_interval: pl.DataFrame,
    coverage_rates: list[float],
) -> None:
    """Check coverage parameter filters interval predictions correctly.

    Only applicable for interval scorers.

    Parameters
    ----------
    scorer : BaseScorer
        Interval scorer instance
    y_truth : pl.DataFrame
        Ground truth
    y_pred_interval : pl.DataFrame
        Interval predictions with coverage_rate column
    coverage_rates : list of float
        Coverage rates to filter

    Raises
    ------
    AssertionError
        If coverage filtering fails

    """
    tags = scorer.__sklearn_tags__()
    if tags.scorer_tags.prediction_type != "interval":
        # Skip for non-interval scorers
        return

    scorer_filtered = clone(scorer)
    scorer_filtered.set_params(coverage_rates=coverage_rates)

    # Always fit scorer before scoring
    scorer_filtered.fit(y_truth)

    try:
        score = scorer_filtered.score(y_truth, y_pred_interval)
        assert isinstance(score, int | float | np.number), "Coverage-filtered score should be numeric"
    except Exception as e:
        raise AssertionError(f"coverage_rates={coverage_rates} filtering failed: {e}") from e