class_docstr: Pipeline of transformers compositor.
  
  The `TransformerPipeline` compositor allows to chain transformers.
  The pipeline is constructed with a list of sktime transformers, i.e.
  estimators following the BaseTransformer interface. The list can be
  unnamed (a simple list of transformers) or string named (a list of
  pairs of string, estimator).
  
  For a list of transformers `trafo1`, `trafo2`, ..., `trafoN`,
  the pipeline behaves as follows:
  
  * `fit`
      Changes state by running `trafo1.fit_transform`,
      trafo2.fit_transform` etc sequentially, with
      `trafo[i]` receiving the output of `trafo[i-1]`
  * `transform`
      Result is of executing `trafo1.transform`, `trafo2.transform`,
      etc with `trafo[i].transform` input = output of `trafo[i-1].transform`,
      and returning the output of `trafoN.transform`
  * `inverse_transform`
      Result is of executing `trafo[i].inverse_transform`,
      with `trafo[i].inverse_transform` input = output
      `trafo[i-1].inverse_transform`, and returning the output of
      `trafoN.inverse_transform`
  * `update`
      Changes state by chaining `trafo1.update`, `trafo1.transform`,
      `trafo2.update`, `trafo2.transform`, ..., `trafoN.update`,
      where `trafo[i].update` and `trafo[i].transform` receive as input
      the output of `trafo[i-1].transform`
  
  The `get_params`, `set_params` uses `sklearn` compatible nesting interface
  if list is unnamed, names are generated as names of classes
  if names are non-unique, `f"_{str(i)}"` is appended to each name string
  where `i` is the total count of occurrence of a non-unique string
  inside the list of names leading up to it (inclusive)
  
  A `TransformerPipeline` can also be created by using the magic multiplication
  on any transformer, i.e., any estimator inheriting from `BaseTransformer`
  for instance, `my_trafo1 * my_trafo2 * my_trafo3`
  will result in the same object as  obtained from the constructor
  `TransformerPipeline([my_trafo1, my_trafo2, my_trafo3])`
  A magic multiplication can also be used with (str, transformer) pairs,
  as long as one element in the chain is a transformer
  
  Parameters
  ----------
  steps : list of sktime transformers, or
      list of tuples (str, transformer) of sktime transformers
      these are "blueprint" transformers, states do not change when `fit` is called
  
  Attributes
  ----------
  steps_ : list of tuples (str, transformer) of sktime transformers
      clones of transformers in `steps` which are fitted in the pipeline
      is always in (str, transformer) format, even if `steps` is just a list
      strings not passed in `steps` are replaced by unique generated strings
      i-th transformer in `steps_` is clone of i-th in `steps`
  
  Examples
  --------
  >>> from sktime.transformations.series.exponent import ExponentTransformer
  >>> t1 = ExponentTransformer(power=2)
  >>> t2 = ExponentTransformer(power=0.5)
  
      Example 1, option A: construct without strings (unique names are generated for
      the two components t1 and t2)
  
  >>> pipe = TransformerPipeline(steps = [t1, t2])
  
      Example 1, option B: construct with strings to give custom names to steps
  
  >>> pipe = TransformerPipeline(
  ...         steps = [
  ...             ("trafo1", t1),
  ...             ("trafo2", t2),
  ...         ]
  ...     )
  
      Example 1, option C: for quick construction, the * dunder method can be used
  
  >>> pipe = t1 * t2
  
      Example 2: sklearn transformers can be used in the pipeline.
      If applied to Series, sklearn transformers are applied by series instance.
      If applied to Table, sklearn transformers are applied to the table as a whole.
  
  >>> from sklearn.preprocessing import StandardScaler
  >>> from sktime.transformations.series.summarize import SummaryTransformer
  
      This applies the scaler per series, then summarizes:
  
  >>> pipe = StandardScaler() * SummaryTransformer()
  
      This applies the sumamrization, then scales the full summary table:
  
  >>> pipe = SummaryTransformer() * StandardScaler()
  
      This scales the series, then summarizes, then scales the full summary table:
  
  >>> pipe = StandardScaler() * SummaryTransformer() * StandardScaler()
class_docstr_tok: ["Pipeline","of","transformers","compositor",".","The","`","TransformerPipeline","`","compositor","allows","to","chain","transformers",".","The","pipeline","is","constructed","with","a","list","of","sktime","transformers",",","i.e",".","estimators","following","the","BaseTransformer","interface",".","The","list","can","be","unnamed","(","a","simple","list","of","transformers",")","or","string","named","(","a","list","of","pairs","of","string",",","estimator",")",".","For","a","list","of","transformers","`","trafo1","`",",","`","trafo2","`",",","...",",","`","trafoN","`",",","the","pipeline","behaves","as","follows",":","*","`","fit","`","Changes","state","by","running","`","trafo1.fit_transform","`",",","trafo2.fit_transform","`","etc","sequentially",",","with","`","trafo","[","i","]","`","receiving","the","output","of","`","trafo","[","i-1","]","`","*","`","transform","`","Result","is","of","executing","`","trafo1.transform","`",",","`","trafo2.transform","`",",","etc","with","`","trafo","[","i","]",".transform","`","input","=","output","of","`","trafo","[","i-1","]",".transform","`",",","and","returning","the","output","of","`","trafoN.transform","`","*","`","inverse_transform","`","Result","is","of","executing","`","trafo","[","i","]",".inverse_transform","`",",","with","`","trafo","[","i","]",".inverse_transform","`","input","=","output","`","trafo","[","i-1","]",".inverse_transform","`",",","and","returning","the","output","of","`","trafoN.inverse_transform","`","*","`","update","`","Changes","state","by","chaining","`","trafo1.update","`",",","`","trafo1.transform","`",",","`","trafo2.update","`",",","`","trafo2.transform","`",",","...",",","`","trafoN.update","`",",","where","`","trafo","[","i","]",".update","`","and","`","trafo","[","i","]",".transform","`","receive","as","input","the","output","of","`","trafo","[","i-1","]",".transform","`","The","`","get_params","`",",","`","set_params","`","uses","`","sklearn","`","compatible","nesting","interface","if","list","is","unnamed",",","names","are","generated","as","names","of","classes","if","names","are","non-unique",",","`","f","''","_","{","str","(","i",")","}","''","`","is","appended","to","each","name","string","where","`","i","`","is","the","total","count","of","occurrence","of","a","non-unique","string","inside","the","list","of","names","leading","up","to","it","(","inclusive",")","A","`","TransformerPipeline","`","can","also","be","created","by","using","the","magic","multiplication","on","any","transformer",",","i.e.",",","any","estimator","inheriting","from","`","BaseTransformer","`","for","instance",",","`","my_trafo1","*","my_trafo2","*","my_trafo3","`","will","result","in","the","same","object","as","obtained","from","the","constructor","`","TransformerPipeline","(","[","my_trafo1",",","my_trafo2",",","my_trafo3","]",")","`","A","magic","multiplication","can","also","be","used","with","(","str",",","transformer",")","pairs",",","as","long","as","one","element","in","the","chain","is","a","transformer","Parameters","--","--","--","--","--","steps",":","list","of","sktime","transformers",",","or","list","of","tuples","(","str",",","transformer",")","of","sktime","transformers","these","are","``","blueprint","''","transformers",",","states","do","not","change","when","`","fit","`","is","called","Attributes","--","--","--","--","--","steps_",":","list","of","tuples","(","str",",","transformer",")","of","sktime","transformers","clones","of","transformers","in","`","steps","`","which","are","fitted","in","the","pipeline","is","always","in","(","str",",","transformer",")","format",",","even","if","`","steps","`","is","just","a","list","strings","not","passed","in","`","steps","`","are","replaced","by","unique","generated","strings","i-th","transformer","in","`","steps_","`","is","clone","of","i-th","in","`","steps","`","Examples","--","--","--","--",">",">",">","from","sktime.transformations.series.exponent","import","ExponentTransformer",">",">",">","t1","=","ExponentTransformer","(","power=2",")",">",">",">","t2","=","ExponentTransformer","(","power=0.5",")","Example","1",",","option","A",":","construct","without","strings","(","unique","names","are","generated","for","the","two","components","t1","and","t2",")",">",">",">","pipe","=","TransformerPipeline","(","steps","=","[","t1",",","t2","]",")","Example","1",",","option","B",":","construct","with","strings","to","give","custom","names","to","steps",">",">",">","pipe","=","TransformerPipeline","(","...","steps","=","[","...","(","``","trafo1","''",",","t1",")",",","...","(","``","trafo2","''",",","t2",")",",","...","]","...",")","Example","1",",","option","C",":","for","quick","construction",",","the","*","dunder","method","can","be","used",">",">",">","pipe","=","t1","*","t2","Example","2",":","sklearn","transformers","can","be","used","in","the","pipeline",".","If","applied","to","Series",",","sklearn","transformers","are","applied","by","series","instance",".","If","applied","to","Table",",","sklearn","transformers","are","applied","to","the","table","as","a","whole",".",">",">",">","from","sklearn.preprocessing","import","StandardScaler",">",">",">","from","sktime.transformations.series.summarize","import","SummaryTransformer","This","applies","the","scaler","per","series",",","then","summarizes",":",">",">",">","pipe","=","StandardScaler","(",")","*","SummaryTransformer","(",")","This","applies","the","sumamrization",",","then","scales","the","full","summary","table",":",">",">",">","pipe","=","SummaryTransformer","(",")","*","StandardScaler","(",")","This","scales","the","series",",","then","summarizes",",","then","scales","the","full","summary","table",":",">",">",">","pipe","=","StandardScaler","(",")","*","SummaryTransformer","(",")","*","StandardScaler","(",")"]
docstr: Inverse transform, inverse operation to transform.
  
  private _inverse_transform containing core logic, called from inverse_transform
  
  Parameters
  ----------
  X : Series or Panel of mtype X_inner_mtype
      if X_inner_mtype is list, _inverse_transform must support all types in it
      Data to be inverse transformed
  y : Series or Panel of mtype y_inner_mtype, optional (default=None)
      Additional data, e.g., labels for transformation
  
  Returns
  -------
  inverse transformed version of X
docstr_tok: ["Inverse","transform",",","inverse","operation","to","transform",".","private","_inverse_transform","containing","core","logic",",","called","from","inverse_transform","Parameters","--","--","--","--","--","X",":","Series","or","Panel","of","mtype","X_inner_mtype","if","X_inner_mtype","is","list",",","_inverse_transform","must","support","all","types","in","it","Data","to","be","inverse","transformed","y",":","Series","or","Panel","of","mtype","y_inner_mtype",",","optional","(","default=None",")","Additional","data",",","e.g.",",","labels","for","transformation","Returns","--","--","--","-","inverse","transformed","version","of","X"]
code: def _inverse_transform(self, X, y=None):
      """Inverse transform, inverse operation to transform.
  
      private _inverse_transform containing core logic, called from inverse_transform
  
      Parameters
      ----------
      X : Series or Panel of mtype X_inner_mtype
          if X_inner_mtype is list, _inverse_transform must support all types in it
          Data to be inverse transformed
      y : Series or Panel of mtype y_inner_mtype, optional (default=None)
          Additional data, e.g., labels for transformation
  
      Returns
      -------
      inverse transformed version of X
      """
      Xt = X
      for _, transformer in reversed(self.steps_):
          if not self.get_tag("fit_is_empty", False):
              Xt = transformer.inverse_transform(X=Xt, y=y)
          else:
              Xt = transformer.fit(X=Xt, y=y).inverse_transform(
                  X=Xt, y=y
              )
  
      return Xt
  
imports: from sktime.base._meta import _HeterogenousMetaEstimator
  from sktime.transformations.base import BaseTransformer
  from sktime.transformations.compose._common import CORE_MTYPES, _coerce_to_sktime
  from sktime.utils.sklearn import is_sklearn_classifier, is_sklearn_clusterer, is_sklearn_regressor
label_desc: Use image node_id 8 for calling the TransformerPipeline obj's underlying member method code with example usage: obj._inverse_transform(X, y) and returns: Xt