docstr: Forecast time series at future horizon.
  
  private _predict containing the core logic, called from predict
  
  State required:
      Requires state to be "fitted".
  
  Accesses in self:
      Fitted model attributes ending in "_"
      self.cutoff
  
  Parameters
  ----------
  fh : guaranteed to be ForecastingHorizon or None, optional (default=None)
      The forecasting horizon with the steps ahead to to predict.
      If not passed in _fit, guaranteed to be passed here
  X : pd.DataFrame, optional (default=None)
      Exogenous time series
  
  Returns
  -------
  y_pred : pd.Series
      Point predictions
code: def _predict(self, fh, X):
      """Forecast time series at future horizon.
  
      private _predict containing the core logic, called from predict
  
      State required:
          Requires state to be "fitted".
  
      Accesses in self:
          Fitted model attributes ending in "_"
          self.cutoff
  
      Parameters
      ----------
      fh : guaranteed to be ForecastingHorizon or None, optional (default=None)
          The forecasting horizon with the steps ahead to to predict.
          If not passed in _fit, guaranteed to be passed here
      X : pd.DataFrame, optional (default=None)
          Exogenous time series
  
      Returns
      -------
      y_pred : pd.Series
          Point predictions
      """
      if not self.refit:
          raise RuntimeError(
              f"In {self.__class__.__name__}, refit must be True to make predictions,"
              f" but found refit=False. If refit=False, {self.__class__.__name__} can"
              " be used only to tune hyper-parameters, as a parameter estimator."
          )
      return super()._predict(fh=fh, X=X)
  
imports: from collections.abc import Sequence
  from typing import Dict, List, Optional, Union
  import numpy
  import pandas
  from joblib import Parallel, delayed
  from sklearn.model_selection import ParameterGrid, ParameterSampler, check_cv
  from sktime.datatypes import mtype_to_scitype
  from sktime.exceptions import NotFittedError
  from sktime.forecasting.base._delegate import _DelegatedForecaster
  from sktime.forecasting.model_evaluation import evaluate
  from sktime.performance_metrics.base import BaseMetric
  from sktime.split.base import BaseSplitter
  from sktime.utils.parallel import parallelize
  from sktime.utils.validation.forecasting import check_scoring
  from sktime.utils.warnings import warn
label_desc: Use image node_id 6 for calling the BaseGridSearch obj's underlying member method code with example usage: obj._predict(fh, X) and returns: super