class_docstr: Base forecaster template class.
  
  The base forecaster specifies the methods and method signatures that all forecasters
  have to implement.
  
  Specific implementations of these methods is deferred to concrete forecasters.
class_docstr_tok: ["Base","forecaster","template","class",".","The","base","forecaster","specifies","the","methods","and","method","signatures","that","all","forecasters","have","to","implement",".","Specific","implementations","of","these","methods","is","deferred","to","concrete","forecasters","."]
docstr: Compute/return quantile forecasts.
  
  If alpha is iterable, multiple quantiles will be calculated.
  
  State required:
      Requires state to be "fitted".
  
  Accesses in self:
      Fitted model attributes ending in "_".
      self.cutoff, self._is_fitted
  
  Writes to self:
      Stores fh to self.fh if fh is passed and has not been passed previously.
  
  Parameters
  ----------
  fh : int, list, np.array or ForecastingHorizon (not optional)
      The forecasting horizon encoding the time stamps to forecast at.
      if has not been passed in fit, must be passed, not optional
  X : time series in sktime compatible format, optional (default=None)
          Exogeneous time series to fit to
      Should be of same scitype (Series, Panel, or Hierarchical) as y in fit
      if self.get_tag("X-y-must-have-same-index"), must contain fh.index
  alpha : float or list of float of unique values, optional (default=[0.05, 0.95])
      A probability or list of, at which quantile forecasts are computed.
  
  Returns
  -------
  quantiles : pd.DataFrame
      Column has multi-index: first level is variable name from y in fit,
          second level being the values of alpha passed to the function.
      Row index is fh, with additional (upper) levels equal to instance levels,
              from y seen in fit, if y seen in fit was Panel or Hierarchical.
      Entries are quantile forecasts, for var in col index,
          at quantile probability in second col index, for the row index.
docstr_tok: ["Compute\/return","quantile","forecasts",".","If","alpha","is","iterable",",","multiple","quantiles","will","be","calculated",".","State","required",":","Requires","state","to","be","``","fitted","''",".","Accesses","in","self",":","Fitted","model","attributes","ending","in","``","_","''",".","self.cutoff",",","self._is_fitted","Writes","to","self",":","Stores","fh","to","self.fh","if","fh","is","passed","and","has","not","been","passed","previously",".","Parameters","--","--","--","--","--","fh",":","int",",","list",",","np.array","or","ForecastingHorizon","(","not","optional",")","The","forecasting","horizon","encoding","the","time","stamps","to","forecast","at",".","if","has","not","been","passed","in","fit",",","must","be","passed",",","not","optional","X",":","time","series","in","sktime","compatible","format",",","optional","(","default=None",")","Exogeneous","time","series","to","fit","to","Should","be","of","same","scitype","(","Series",",","Panel",",","or","Hierarchical",")","as","y","in","fit","if","self.get_tag","(","``","X-y-must-have-same-index","''",")",",","must","contain","fh.index","alpha",":","float","or","list","of","float","of","unique","values",",","optional","(","default=","[","0.05",",","0.95","]",")","A","probability","or","list","of",",","at","which","quantile","forecasts","are","computed",".","Returns","--","--","--","-","quantiles",":","pd.DataFrame","Column","has","multi-index",":","first","level","is","variable","name","from","y","in","fit",",","second","level","being","the","values","of","alpha","passed","to","the","function",".","Row","index","is","fh",",","with","additional","(","upper",")","levels","equal","to","instance","levels",",","from","y","seen","in","fit",",","if","y","seen","in","fit","was","Panel","or","Hierarchical",".","Entries","are","quantile","forecasts",",","for","var","in","col","index",",","at","quantile","probability","in","second","col","index",",","for","the","row","index","."]
code: def predict_quantiles(self, fh=None, X=None, alpha=None):
      """Compute/return quantile forecasts.
  
      If alpha is iterable, multiple quantiles will be calculated.
  
      State required:
          Requires state to be "fitted".
  
      Accesses in self:
          Fitted model attributes ending in "_".
          self.cutoff, self._is_fitted
  
      Writes to self:
          Stores fh to self.fh if fh is passed and has not been passed previously.
  
      Parameters
      ----------
      fh : int, list, np.array or ForecastingHorizon (not optional)
          The forecasting horizon encoding the time stamps to forecast at.
          if has not been passed in fit, must be passed, not optional
      X : time series in sktime compatible format, optional (default=None)
              Exogeneous time series to fit to
          Should be of same scitype (Series, Panel, or Hierarchical) as y in fit
          if self.get_tag("X-y-must-have-same-index"), must contain fh.index
      alpha : float or list of float of unique values, optional (default=[0.05, 0.95])
          A probability or list of, at which quantile forecasts are computed.
  
      Returns
      -------
      quantiles : pd.DataFrame
          Column has multi-index: first level is variable name from y in fit,
              second level being the values of alpha passed to the function.
          Row index is fh, with additional (upper) levels equal to instance levels,
                  from y seen in fit, if y seen in fit was Panel or Hierarchical.
          Entries are quantile forecasts, for var in col index,
              at quantile probability in second col index, for the row index.
      """
      if not self.get_tag("capability:pred_int"):
          raise NotImplementedError(
              f"{self.__class__.__name__} does not have the capability to return "
              "quantile predictions. If you "
              "think this estimator should have the capability, please open "
              "an issue on sktime."
          )
      self.check_is_fitted()
  
      # input checks and conversions
  
      # check fh and coerce to ForecastingHorizon
      fh = self._check_fh(fh)
  
      # default alpha
      if alpha is None:
          alpha = [0.05, 0.95]
      # check alpha and coerce to list
      alpha = check_alpha(alpha, name="alpha")
  
      # input check and conversion for X
      X_inner = self._check_X(X=X)
  
      # we call the ordinary _predict_quantiles if no looping/vectorization needed
      if not self._is_vectorized:
          quantiles = self._predict_quantiles(
              fh=fh, X=X_inner, alpha=alpha
          )
      else:
          # otherwise we call the vectorized version of predict_quantiles
          quantiles = self._vectorize(
              "predict_quantiles",
              fh=fh,
              X=X_inner,
              alpha=alpha,
          )
  
      return quantiles
  
imports: from copy import deepcopy
  from itertools import product
  import numpy
  import pandas
  from sktime.base import BaseEstimator
  from sktime.datatypes import VectorizedDF, check_is_scitype, convert_to, get_cutoff, mtype_to_scitype, scitype_to_mtype, update_data
  from sktime.forecasting.base._fh import ForecastingHorizon
  from sktime.utils.datetime import _shift
  from sktime.utils.validation._dependencies import _check_estimator_deps
  from sktime.utils.validation.forecasting import check_alpha, check_cv, check_fh, check_X
  from sktime.utils.validation.series import check_equal_time_index
  from sktime.utils.warnings import warn
label_desc: Use image node_id 10 for calling the BaseForecaster obj's underlying member method code with example usage: obj.predict_quantiles(fh, X, alpha) and returns: quantiles