class_docstr: Forecast a time series by aggregating forecasts from its bootstraps.
  
  Bagged "Bootstrap Aggregating" Forecasts are obtained by forecasting bootstrapped
  time series and then aggregating the resulting forecasts. For the point forecast,
  the different forecasts are aggregated using the mean function [1]. Prediction
  intervals and quantiles are calculated for each time point in the forecasting
  horizon by calculating the sampled forecast quantiles.
  
  Bergmeir et al. (2016) [2] show that, on average, bagging ETS forecasts gives better
  forecasts than just applying ETS directly. The default bootstrapping transformer
  and forecaster are selected as in [2].
  
  Parameters
  ----------
  bootstrap_transformer : BaseTransformer
      (sktime.transformations.bootstrap.STLBootstrapTransformer)
      Bootstrapping Transformer that takes a series (with tag
      scitype:transform-input=Series) as input and returns a panel (with tag
      scitype:transform-input=Panel) of bootstrapped time series if not specified
      sktime.transformations.bootstrap.STLBootstrapTransformer is used.
  forecaster : BaseForecaster (sktime.forecating.ets.AutoETS)
      A valid sktime Forecaster. If not specified sktime.forecating.ets.AutoETS is
      used.
  sp: int (default=2)
      Seasonal period for default Forecaster and Transformer. Must be 2 or greater.
      Ignored for the bootstrap_transformer and forecaster if they are specified.
  random_state: int or np.random.RandomState (default=None)
      The random state of the estimator, used to control the random number generator
  
  See Also
  --------
  sktime.transformations.bootstrap.MovingBlockBootstrapTransformer :
      Transformer that applies the Moving Block Bootstrapping method to create
      a panel of synthetic time series.
  
  sktime.transformations.bootstrap.STLBootstrapTransformer :
      Transformer that utilises BoxCox, STL and Moving Block Bootstrapping to create
      a panel of similar time series.
  
  References
  ----------
  .. [1] Hyndman, R.J., & Athanasopoulos, G. (2021) Forecasting: principles and
      practice, 3rd edition, OTexts: Melbourne, Australia. OTexts.com/fpp3,
      Chapter 12.5. Accessed on February 13th 2022.
  .. [2] Bergmeir, C., Hyndman, R. J., & Benítez, J. M. (2016). Bagging exponential
      smoothing methods using STL decomposition and Box-Cox transformation.
      International Journal of Forecasting, 32(2), 303-312
  
  Examples
  --------
  >>> from sktime.transformations.bootstrap import STLBootstrapTransformer
  >>> from sktime.forecasting.naive import NaiveForecaster
  >>> from sktime.forecasting.compose import BaggingForecaster
  >>> from sktime.datasets import load_airline
  >>> y = load_airline()
  >>> forecaster = BaggingForecaster(
  ...     STLBootstrapTransformer(sp=12), NaiveForecaster(sp=12)
  ... )  # doctest: +SKIP
  >>> forecaster.fit(y)  # doctest: +SKIP
  BaggingForecaster(...)
  >>> y_hat = forecaster.predict([1,2,3])  # doctest: +SKIP
class_docstr_tok: ["Forecast","a","time","series","by","aggregating","forecasts","from","its","bootstraps",".","Bagged","``","Bootstrap","Aggregating","''","Forecasts","are","obtained","by","forecasting","bootstrapped","time","series","and","then","aggregating","the","resulting","forecasts",".","For","the","point","forecast",",","the","different","forecasts","are","aggregated","using","the","mean","function","[","1","]",".","Prediction","intervals","and","quantiles","are","calculated","for","each","time","point","in","the","forecasting","horizon","by","calculating","the","sampled","forecast","quantiles",".","Bergmeir","et","al",".","(","2016",")","[","2","]","show","that",",","on","average",",","bagging","ETS","forecasts","gives","better","forecasts","than","just","applying","ETS","directly",".","The","default","bootstrapping","transformer","and","forecaster","are","selected","as","in","[","2","]",".","Parameters","--","--","--","--","--","bootstrap_transformer",":","BaseTransformer","(","sktime.transformations.bootstrap.STLBootstrapTransformer",")","Bootstrapping","Transformer","that","takes","a","series","(","with","tag","scitype",":","transform-input=Series",")","as","input","and","returns","a","panel","(","with","tag","scitype",":","transform-input=Panel",")","of","bootstrapped","time","series","if","not","specified","sktime.transformations.bootstrap.STLBootstrapTransformer","is","used",".","forecaster",":","BaseForecaster","(","sktime.forecating.ets.AutoETS",")","A","valid","sktime","Forecaster",".","If","not","specified","sktime.forecating.ets.AutoETS","is","used",".","sp",":","int","(","default=2",")","Seasonal","period","for","default","Forecaster","and","Transformer",".","Must","be","2","or","greater",".","Ignored","for","the","bootstrap_transformer","and","forecaster","if","they","are","specified",".","random_state",":","int","or","np.random.RandomState","(","default=None",")","The","random","state","of","the","estimator",",","used","to","control","the","random","number","generator","See","Also","--","--","--","--","sktime.transformations.bootstrap.MovingBlockBootstrapTransformer",":","Transformer","that","applies","the","Moving","Block","Bootstrapping","method","to","create","a","panel","of","synthetic","time","series",".","sktime.transformations.bootstrap.STLBootstrapTransformer",":","Transformer","that","utilises","BoxCox",",","STL","and","Moving","Block","Bootstrapping","to","create","a","panel","of","similar","time","series",".","References","--","--","--","--","--","..","[","1","]","Hyndman",",","R.J.",",","&","Athanasopoulos",",","G.","(","2021",")","Forecasting",":","principles","and","practice",",","3rd","edition",",","OTexts",":","Melbourne",",","Australia",".","OTexts.com\/fpp3",",","Chapter","12.5",".","Accessed","on","February","13th","2022",".","..","[","2","]","Bergmeir",",","C.",",","Hyndman",",","R.","J.",",","&","Ben\u00edtez",",","J.","M.","(","2016",")",".","Bagging","exponential","smoothing","methods","using","STL","decomposition","and","Box-Cox","transformation",".","International","Journal","of","Forecasting",",","32","(","2",")",",","303-312","Examples","--","--","--","--",">",">",">","from","sktime.transformations.bootstrap","import","STLBootstrapTransformer",">",">",">","from","sktime.forecasting.naive","import","NaiveForecaster",">",">",">","from","sktime.forecasting.compose","import","BaggingForecaster",">",">",">","from","sktime.datasets","import","load_airline",">",">",">","y","=","load_airline","(",")",">",">",">","forecaster","=","BaggingForecaster","(","...","STLBootstrapTransformer","(","sp=12",")",",","NaiveForecaster","(","sp=12",")","...",")","#","doctest",":","+SKIP",">",">",">","forecaster.fit","(","y",")","#","doctest",":","+SKIP","BaggingForecaster","(","...",")",">",">",">","y_hat","=","forecaster.predict","(","[","1,2,3","]",")","#","doctest",":","+SKIP"]
docstr: Fit forecaster to training data.
  
  private _fit containing the core logic, called from fit
  
  Writes to self:
      Sets fitted model attributes ending in "_".
  
  Parameters
  ----------
  y : guaranteed to be of a type in self.get_tag("y_inner_mtype")
      Time series to which to fit the forecaster.
      if self.get_tag("scitype:y")=="univariate":
          guaranteed to have a single column/variable
      if self.get_tag("scitype:y")=="multivariate":
          guaranteed to have 2 or more columns
      if self.get_tag("scitype:y")=="both": no restrictions apply
  fh : guaranteed to be ForecastingHorizon or None, optional (default=None)
      The forecasting horizon with the steps ahead to to predict.
      Required (non-optional) here if self.get_tag("requires-fh-in-fit")==True
      Otherwise, if not passed in _fit, guaranteed to be passed in _predict
  X : optional (default=None)
      guaranteed to be of a type in self.get_tag("X_inner_mtype")
      Exogeneous time series to fit to.
  
  Returns
  -------
  self : reference to self
docstr_tok: ["Fit","forecaster","to","training","data",".","private","_fit","containing","the","core","logic",",","called","from","fit","Writes","to","self",":","Sets","fitted","model","attributes","ending","in","``","_","''",".","Parameters","--","--","--","--","--","y",":","guaranteed","to","be","of","a","type","in","self.get_tag","(","``","y_inner_mtype","''",")","Time","series","to","which","to","fit","the","forecaster",".","if","self.get_tag","(","``","scitype",":","y","''",")","==","''","univariate","''",":","guaranteed","to","have","a","single","column\/variable","if","self.get_tag","(","``","scitype",":","y","''",")","==","''","multivariate","''",":","guaranteed","to","have","2","or","more","columns","if","self.get_tag","(","``","scitype",":","y","''",")","==","''","both","''",":","no","restrictions","apply","fh",":","guaranteed","to","be","ForecastingHorizon","or","None",",","optional","(","default=None",")","The","forecasting","horizon","with","the","steps","ahead","to","to","predict",".","Required","(","non-optional",")","here","if","self.get_tag","(","``","requires-fh-in-fit","''",")","==True","Otherwise",",","if","not","passed","in","_fit",",","guaranteed","to","be","passed","in","_predict","X",":","optional","(","default=None",")","guaranteed","to","be","of","a","type","in","self.get_tag","(","``","X_inner_mtype","''",")","Exogeneous","time","series","to","fit","to",".","Returns","--","--","--","-","self",":","reference","to","self"]
code: def _fit(self, y, X, fh):
      """Fit forecaster to training data.
  
      private _fit containing the core logic, called from fit
  
      Writes to self:
          Sets fitted model attributes ending in "_".
  
      Parameters
      ----------
      y : guaranteed to be of a type in self.get_tag("y_inner_mtype")
          Time series to which to fit the forecaster.
          if self.get_tag("scitype:y")=="univariate":
              guaranteed to have a single column/variable
          if self.get_tag("scitype:y")=="multivariate":
              guaranteed to have 2 or more columns
          if self.get_tag("scitype:y")=="both": no restrictions apply
      fh : guaranteed to be ForecastingHorizon or None, optional (default=None)
          The forecasting horizon with the steps ahead to to predict.
          Required (non-optional) here if self.get_tag("requires-fh-in-fit")==True
          Otherwise, if not passed in _fit, guaranteed to be passed in _predict
      X : optional (default=None)
          guaranteed to be of a type in self.get_tag("X_inner_mtype")
          Exogeneous time series to fit to.
  
      Returns
      -------
      self : reference to self
      """
      if self.bootstrap_transformer is None:
          self.bootstrap_transformer_ = STLBootstrapTransformer(
              sp=self.sp
          )
      else:
          self.bootstrap_transformer_ = clone(
              self.bootstrap_transformer
          )
  
      if self.forecaster is None:
          self.forecaster_ = AutoETS(sp=self.sp)
      else:
          self.forecaster_ = clone(self.forecaster)
  
      if (
          self.bootstrap_transformer_.get_tag(
              "scitype:transform-input", raise_error=False
          )
          != "Series"
          and self.bootstrap_transformer_.get_tag(
              "scitype:transform-output", raise_error=False
          )
          != "Panel"
          and not isinstance(
              self.bootstrap_transformer_, BaseTransformer
          )
      ):
          raise TypeError(
              "bootstrap_transformer in BaggingForecaster should be a Transformer "
              "that takes as input a Series and output a Panel."
          )
  
      if not isinstance(self.forecaster_, BaseForecaster):
          raise TypeError(
              "forecaster in BaggingForecaster should be an sktime Forecaster"
          )
  
      # random state handling passed into input estimators
      self.random_state_ = check_random_state(self.random_state)
      set_random_state(
          self.bootstrap_transformer_, random_state=self.random_state_
      )
      set_random_state(
          self.forecaster_, random_state=self.random_state_
      )
      self.bootstrap_transformer_.fit(X=y)
      y_bootstraps = self.bootstrap_transformer_.transform(X=y)
      self.forecaster_.fit(y=y_bootstraps, fh=fh, X=None)
  
      return self
  
imports: from typing import List, Union
  import numpy
  import pandas
  from sklearn import clone
  from sklearn.utils import check_random_state
  from sktime.datatypes._utilities import update_data
  from sktime.forecasting.base import BaseForecaster
  from sktime.forecasting.ets import AutoETS
  from sktime.transformations.base import BaseTransformer
  from sktime.transformations.bootstrap import MovingBlockBootstrapTransformer, STLBootstrapTransformer
  from sktime.utils.estimators import MockForecaster
  from sktime.utils.random_state import set_random_state
label_desc: Use image node_id 2 for calling the BaggingForecaster obj's underlying member method code with example usage: obj._fit(y, X, fh) and returns: self