code: def inv_transform_ct(x_in, encoding):
      """
      Inverse transform when using a ColumnsTransformer.
  
      As ColumnsTransformer output hstack the result of transformers, if the TOP-preprocessed data are re-ordered
      after the ColumnTransformer the inverse transform must return false result.
  
      We successively inverse the transformers with columns position. That's why inverse colnames
      are prefixed by the transformers names.
  
      Parameters
      ----------
      x_in : pandas.DataFrame
          Prediction set.
      encoding : list
          The list must contain a single ColumnsTransformer and an optional list of dict.
  
      Returns
      -------
      pandas.Dataframe
          The reversed transformation for the given list of encoding.
      """
      if str(type(encoding)) == columntransformer:
          # We use inverse tranform from the encoding method base on columns position
          init = 0
          rst = pd.DataFrame()
  
          for enc in encoding.transformers_:
              name_encoding = enc[0]
              ct_encoding = enc[1]
              col_encoding = enc[2]
              # For Scikit encoding we use the associated inverse transform method
              if str(type(ct_encoding)) in supported_sklearn:
                  frame, init = inv_transform_sklearn_in_ct(
                      x_in,
                      init,
                      name_encoding,
                      col_encoding,
                      ct_encoding,
                  )
  
              # For category encoding we use the mapping
              elif str(type(ct_encoding)) in supported_category_encoder:
                  frame, init = inv_transform_ce_in_ct(
                      x_in,
                      init,
                      name_encoding,
                      col_encoding,
                      ct_encoding,
                  )
  
              # columns not encode
              elif name_encoding == "remainder":
                  if ct_encoding == "passthrough":
                      nb_col = len(col_encoding)
                      frame = x_in.iloc[:, init : init + nb_col]
                  else:
                      frame = pd.DataFrame()
  
              else:
                  raise Exception(
                      f"{ct_encoding} is not supported yet."
                  )
  
              rst = pd.concat([rst, frame], axis=1)
  
      elif str(type(encoding)) == "<class 'list'>":
          rst = inv_transform_ordinal(x_in, encoding)
  
      else:
          raise Exception(
              f"{encoding.__class__.__name__} not supported, no inverse done."
          )
  
      return rst
  
file_path: shapash/shapash/utils/columntransformer_backend.py
imports: import pandas
  import numpy
  from shapash.utils.category_encoder_backend import inv_transform_ordinal
  from shapash.utils.category_encoder_backend import inv_transform_ce
  from shapash.utils.category_encoder_backend import supported_category_encoder
  from shapash.utils.category_encoder_backend import dummies_category_encoder
  from shapash.utils.category_encoder_backend import category_encoder_binary
  from shapash.utils.category_encoder_backend import transform_ordinal, get_col_mapping_ce
  from shapash.utils.model_synoptic import simple_tree_model_sklearn, catboost_model, linear_model, svm_model, xgboost_model, lightgbm_model, dict_model_feature
  from shapash.utils.model import extract_features_model
label_desc: Use image node_id 1 for calling a global function with example usage: inv_transform_ct(x_in, encoding) and returns: rst