class_docstr: Transformer base class.
class_docstr_tok: ["Transformer","base","class","."]
docstr: Inverse transform X and return an inverse transformed version.
  
  Currently it is assumed that only transformers with tags
      "scitype:transform-input"="Series", "scitype:transform-output"="Series",
  have an inverse_transform.
  
  State required:
      Requires state to be "fitted".
  
  Accesses in self:
  _is_fitted : must be True
  _X : optionally accessed, only available if remember_data tag is True
  fitted model attributes (ending in "_") : accessed by _inverse_transform
  
  Parameters
  ----------
  X : time series in sktime compatible data container format
      Data to inverse transform, of sktime type as follows:
      Series: interpreted as single time series
          pd.Series, pd.DataFrame, or np.ndarray (1D or 2D)
          if np.ndarray, of shape (n_timepoints) or (n_variables, n_timepoints)
      Panel: pd.DataFrame with 2-level MultiIndex, list of pd.DataFrame,
          pd.DataFrame in long/wide format, or 3D np.ndarray
          if pd.DataFrame with 2-level MultiIndex, index is (instance, time)
          if 3D np.ndarray, of shape (n_instances, n_variables, n_timepoints)
      Hierarchical: pd.DataFrame with 3- or more-level MultiIndex
          highest (rightmost) level  of MultiIndex is time
      for more details on sktime mtype format specifications,
      and additional valid type specifications, refer to
          examples/AA_datatypes_and_datasets.ipynb
  y : optional, time series in sktime compatible data format, default=None
      Additional data, e.g., labels for transformation
      some transformers require this, see class docstring for details
  
  Returns
  -------
  inverse transformed version of X
      of the same type as X, and conforming to mtype format specifications
code: def inverse_transform(self, X, y=None):
      """Inverse transform X and return an inverse transformed version.
  
      Currently it is assumed that only transformers with tags
          "scitype:transform-input"="Series", "scitype:transform-output"="Series",
      have an inverse_transform.
  
      State required:
          Requires state to be "fitted".
  
      Accesses in self:
      _is_fitted : must be True
      _X : optionally accessed, only available if remember_data tag is True
      fitted model attributes (ending in "_") : accessed by _inverse_transform
  
      Parameters
      ----------
      X : time series in sktime compatible data container format
          Data to inverse transform, of sktime type as follows:
          Series: interpreted as single time series
              pd.Series, pd.DataFrame, or np.ndarray (1D or 2D)
              if np.ndarray, of shape (n_timepoints) or (n_variables, n_timepoints)
          Panel: pd.DataFrame with 2-level MultiIndex, list of pd.DataFrame,
              pd.DataFrame in long/wide format, or 3D np.ndarray
              if pd.DataFrame with 2-level MultiIndex, index is (instance, time)
              if 3D np.ndarray, of shape (n_instances, n_variables, n_timepoints)
          Hierarchical: pd.DataFrame with 3- or more-level MultiIndex
              highest (rightmost) level  of MultiIndex is time
          for more details on sktime mtype format specifications,
          and additional valid type specifications, refer to
              examples/AA_datatypes_and_datasets.ipynb
      y : optional, time series in sktime compatible data format, default=None
          Additional data, e.g., labels for transformation
          some transformers require this, see class docstring for details
  
      Returns
      -------
      inverse transformed version of X
          of the same type as X, and conforming to mtype format specifications
      """
      if self.get_tag("skip-inverse-transform"):
          return X
  
      if not self.get_tag("capability:inverse_transform"):
          raise NotImplementedError(
              f"{type(self)} does not implement inverse_transform"
          )
  
      # check whether is fitted
      self.check_is_fitted()
  
      # input check and conversion for X/y
      X_inner, y_inner, metadata = self._check_X_y(
          X=X, y=y, return_metadata=True
      )
  
      if not isinstance(X_inner, VectorizedDF):
          Xt = self._inverse_transform(X=X_inner, y=y_inner)
      else:
          # otherwise we call the vectorized version of predict
          Xt = self._vectorize(
              "inverse_transform", X=X_inner, y=y_inner
          )
  
      # convert to output mtype
      configs = self.get_config()
      output_conv = configs["output_conversion"]
  
      if output_conv != "off":
          X_out = self._convert_output(
              Xt, metadata=metadata, inverse=True
          )
      else:
          X_out = Xt
  
      return X_out
  
imports: from itertools import product
  from typing import Union
  import numpy
  import pandas
  from sktime.base import BaseEstimator
  from sktime.datatypes import VectorizedDF, check_is_error_msg, check_is_mtype, check_is_scitype, convert, convert_to, mtype_to_scitype, update_data
  from sktime.datatypes._series_as_panel import convert_to_scitype
  from sktime.utils.sklearn import is_sklearn_classifier, is_sklearn_clusterer, is_sklearn_regressor, is_sklearn_transformer
  from sktime.utils.validation._dependencies import _check_estimator_deps
label_desc: Use image node_id 13 for calling the BaseTransformer obj's underlying member method code with example usage: obj.inverse_transform(X, y) and returns: X_out, X