class_docstr: Wrapper around a sklearn-style model for time series forecasting. The underlying model must support
  ``fit()`` and ``predict()`` methods. The model can be trained to be either an autoregressive model of order
  ``maxlags``, or to directly predict the next ``prediction_stride`` timestamps from a history of length ``maxlags``.
  
  If the data is univariate, the model will predict the next ``prediction_stride`` elements of the time series.
  It can then use these predictions to autoregressively predict the next ``prediction_stride`` elements. If the data
  is multivariate, the model will either autoregressively predict the next timestamp of all univariates
  (if ``prediction_stride = 1``), or it will directly predict the next ``prediction_stride`` timestamps of the target
  univariate (if ``prediction_stride > 1``).
class_docstr_tok: ["Wrapper","around","a","sklearn-style","model","for","time","series","forecasting",".","The","underlying","model","must","support","``","fit","(",")","``","and","``","predict","(",")","``","methods",".","The","model","can","be","trained","to","be","either","an","autoregressive","model","of","order","``","maxlags","``",",","or","to","directly","predict","the","next","``","prediction_stride","``","timestamps","from","a","history","of","length","``","maxlags","``",".","If","the","data","is","univariate",",","the","model","will","predict","the","next","``","prediction_stride","``","elements","of","the","time","series",".","It","can","then","use","these","predictions","to","autoregressively","predict","the","next","``","prediction_stride","``","elements",".","If","the","data","is","multivariate",",","the","model","will","either","autoregressively","predict","the","next","timestamp","of","all","univariates","(","if","``","prediction_stride","=","1","``",")",",","or","it","will","directly","predict","the","next","``","prediction_stride","``","timestamps","of","the","target","univariate","(","if","``","prediction_stride",">","1","``",")","."]
docstr: n-step auto-regression method for univariate data. Each regression step predicts prediction_stride data points.
  :return: pred of the univariate for steps [n_samples, steps]
docstr_tok: ["n-step","auto-regression","method","for","univariate","data",".","Each","regression","step","predicts","prediction_stride","data","points",".",":","return",":","pred","of","the","univariate","for","steps","[","n_samples",",","steps","]"]
code: def _hybrid_forecast(self, inputs, exog_data=None, steps=None):
      """
      n-step auto-regression method for univariate data. Each regression step predicts prediction_stride data points.
      :return: pred of the univariate for steps [n_samples, steps]
      """
      # TODO: allow model to use timestamps
      if steps is None:
          steps = self.max_forecast_steps
  
      pred = np.empty(
          (
              len(inputs),
              (int((steps - 1) / self.prediction_stride) + 1)
              * self.prediction_stride,
          )
      )
      for i in range(0, steps, self.prediction_stride):
          next_pred = self.model.predict(inputs)
          if next_pred.ndim == 1:
              next_pred = np.expand_dims(next_pred, axis=1)
          pred[:, i : i + self.prediction_stride] = next_pred
          if i + self.prediction_stride >= steps:
              break
          if exog_data is not None:
              assert (
                  len(inputs) == 1
              ), "If you wish to handle exogenous data in batch, concatenate it to the inputs."
              next_pred = np.concatenate(
                  (
                      next_pred.T,
                      exog_data.values[
                          i + 1 : i + 1 + self.prediction_stride
                      ],
                  ),
                  axis=1,
              )
              next_pred = next_pred.reshape((1, -1))
          inputs = self._update_prior(
              inputs, next_pred, for_univariate=True
          )
      return pred[:, :steps]
  
imports: import logging
  from typing import List, Tuple
  import numpy
  import pandas
  from merlion.models.automl.seasonality import SeasonalityLayer, PeriodicityStrategy
  from merlion.models.forecast.base import ForecasterExogBase, ForecasterExogConfig
  from merlion.models.utils.rolling_window_dataset import RollingWindowDataset
  from merlion.transform.resample import TemporalResample
  from merlion.utils.time_series import to_pd_datetime, TimeSeries
label_desc: Use image node_id 11 for calling the SKLearnForecaster obj's underlying member method code with example usage: obj._hybrid_forecast(inputs, exog_data, steps) and returns: pred