Skip to content

check_search_predict_delegates

yohou.testing.search.check_search_predict_delegates(search_cv, y_train, y_test, X_actual_train=None, X_actual_test=None, X_future=None, X_forecast=None)

Check predict() delegates to best_forecaster_.predict() correctly.

Parameters

Name Type Description Default
search_cv BaseSearchCV

Fitted search CV instance

required
y_train DataFrame

Training target data

required
y_test DataFrame

Test target data

required
X_actual_train DataFrame

Training features

None
X_actual_test DataFrame

Test features

None

Raises

Type Description
AssertionError

If predict() doesn't delegate correctly

Source Code

Show/Hide source
def check_search_predict_delegates(
    search_cv,
    y_train: pl.DataFrame,
    y_test: pl.DataFrame,
    X_actual_train: pl.DataFrame | None = None,
    X_actual_test: pl.DataFrame | None = None,
    X_future: pl.DataFrame | None = None,
    X_forecast: pl.DataFrame | None = None,
) -> None:
    """Check predict() delegates to best_forecaster_.predict() correctly.

    Parameters
    ----------
    search_cv : BaseSearchCV
        Fitted search CV instance
    y_train : pl.DataFrame
        Training target data
    y_test : pl.DataFrame
        Test target data
    X_actual_train : pl.DataFrame, optional
        Training features
    X_actual_test : pl.DataFrame, optional
        Test features

    Raises
    ------
    AssertionError
        If predict() doesn't delegate correctly

    """
    forecasting_horizon = min(3, len(y_test))

    # Make predictions from search CV
    y_pred_search = search_cv.predict(forecasting_horizon=forecasting_horizon, X_future=X_future, X_forecast=X_forecast)

    # Make predictions from best_forecaster_ directly
    y_pred_best = search_cv.best_forecaster_.predict(
        forecasting_horizon=forecasting_horizon, X_future=X_future, X_forecast=X_forecast
    )

    # Predictions should be identical
    assert_frame_equal(y_pred_search, y_pred_best, check_exact=False)