Skip to content

check_randomized_search_distributions

yohou.testing.search.check_randomized_search_distributions(search_cv, y, X_actual=None, forecasting_horizon=3, X_future=None, X_forecast=None)

Check scipy.stats distributions work for parameter sampling.

Parameters

Name Type Description Default
search_cv RandomizedSearchCV

Unfitted RandomizedSearchCV instance with scipy distributions

required
y DataFrame

Training target data

required
X_actual DataFrame

Training features

None
forecasting_horizon int

Number of steps ahead to forecast

3

Raises

Type Description
AssertionError

If distributions don't work correctly

Source Code

Show/Hide source
def check_randomized_search_distributions(
    search_cv,
    y: pl.DataFrame,
    X_actual: pl.DataFrame | None = None,
    forecasting_horizon: int = 3,
    X_future: pl.DataFrame | None = None,
    X_forecast: pl.DataFrame | None = None,
) -> None:
    """Check scipy.stats distributions work for parameter sampling.

    Parameters
    ----------
    search_cv : RandomizedSearchCV
        Unfitted RandomizedSearchCV instance with scipy distributions
    y : pl.DataFrame
        Training target data
    X_actual : pl.DataFrame, optional
        Training features
    forecasting_horizon : int, default=3
        Number of steps ahead to forecast

    Raises
    ------
    AssertionError
        If distributions don't work correctly

    """
    if not isinstance(search_cv, RandomizedSearchCV):
        raise ValueError("This check requires RandomizedSearchCV instance")

    search_cv_clone = clone(search_cv)
    search_cv_clone.fit(y, X_actual, forecasting_horizon=forecasting_horizon, X_future=X_future, X_forecast=X_forecast)

    # Check that fit completed successfully
    assert hasattr(search_cv_clone, "cv_results_"), (
        "RandomizedSearchCV should fit successfully with scipy distributions"
    )

    # Check that parameters were sampled
    params = search_cv_clone.cv_results_["params"]
    assert len(params) > 0, "RandomizedSearchCV should sample parameters"