class_docstr: Applies transformers to columns of an array or dataframe.
  
  This estimator allows different columns or column subsets of the input
  to be transformed separately and the features generated by each transformer
  will be concatenated to form a single feature space.
  This is useful for heterogeneous or columnar data, to combine several
  feature extraction mechanisms or transformations into a single transformer.
  
  Parameters
  ----------
  transformers : list of tuples
      List of (name, transformer, columns) tuples specifying the
      transformer objects to be applied to subsets of the data:
  
      * name : str
          Like in Pipeline and FeatureUnion, this allows the transformer and
          its parameters to be set using ``set_params`` and searched in grid
          search.
      * transformer : {'drop', 'passthrough'} or estimator
          Estimator must support `fit` and `transform`.
          Special-cased strings 'drop' and 'passthrough' are accepted as
          well, to indicate to drop the columns or to pass them through
          untransformed, respectively.
      * columns :  str, array-like of str, int, array-like of int,                 array-like of bool, slice or callable
          Indexes the data on its second axis. Integers are interpreted as
          positional columns, while strings can reference DataFrame columns
          by name.  A scalar string or int should be used where
          ``transformer`` expects X to be a 1d array-like (vector),
          otherwise a 2d array will be passed to the transformer.
          A callable is passed the input data `X` and can return any of the
          above. To select multiple columns by name or dtype, you can use
          :obj:`make_column_selector`.
  
  remainder : {'drop', 'passthrough'} or estimator, default='drop'
      By default, only the specified columns in `transformers` are
      transformed and combined in the output, and the non-specified
      columns are dropped. (default of ``'drop'``).
      By specifying ``remainder='passthrough'``, all remaining columns that
      were not specified in `transformers` will be automatically passed
      through. This subset of columns is concatenated with the output of
      the transformers.
      By setting ``remainder`` to be an estimator, the remaining
      non-specified columns will use the ``remainder`` estimator. The
      estimator must support `fit` and `transform`.
      Note that using this feature requires that the DataFrame columns
      input at `fit` and `transform` have identical order.
  
  sparse_threshold : float, default=0.3
      If the output of the different transformers contains sparse matrices,
      these will be stacked as a sparse matrix if the overall density is
      lower than this value. Use ``sparse_threshold=0`` to always return
      dense.  When the transformed output consists of all dense data, the
      stacked result will be dense, and this keyword will be ignored.
  
  n_jobs : int, default=None
      Number of jobs to run in parallel.
      ``None`` means 1 unless in a :obj:`joblib.parallel_backend` context.
      ``-1`` means using all processors.
      for more details.
  
  transformer_weights : dict, default=None
      Multiplicative weights for features per transformer. The output of the
      transformer is multiplied by these weights. Keys are transformer names,
      values the weights.
  
  verbose : bool, default=False
      If True, the time elapsed while fitting each transformer will be
      printed as it is completed.
  
  Attributes
  ----------
  transformers_ : list
      The collection of fitted transformers as tuples of
      (name, fitted_transformer, column). `fitted_transformer` can be an
      estimator, 'drop', or 'passthrough'. In case there were no columns
      selected, this will be the unfitted transformer.
      If there are remaining columns, the final element is a tuple of the
      form:
      ('remainder', transformer, remaining_columns) corresponding to the
      ``remainder`` parameter. If there are remaining columns, then
      ``len(transformers_)==len(transformers)+1``, otherwise
      ``len(transformers_)==len(transformers)``.
  
  named_transformers_ : :class:`~sklearn.utils.Bunch`
      Read-only attribute to access any transformer by given name.
      Keys are transformer names and values are the fitted transformer
      objects.
  
  sparse_output_ : bool
      Boolean flag indicating whether the output of ``transform`` is a
      sparse matrix or a dense numpy array, which depends on the output
      of the individual transformers and the `sparse_threshold` keyword.
  
  Notes
  -----
  The order of the columns in the transformed feature matrix follows the
  order of how the columns are specified in the `transformers` list.
  Columns of the original feature matrix that are not specified are
  dropped from the resulting transformed feature matrix, unless specified
  in the `passthrough` keyword. Those columns specified with `passthrough`
  are added at the right to the output of the transformers.
  
  See Also
  --------
  make_column_transformer : Convenience function for
      combining the outputs of multiple transformer objects applied to
      column subsets of the original feature space.
  make_column_selector : Convenience function for selecting
      columns based on datatype or the columns name with a regex pattern.
  
  Examples
  --------
  >>> import cupy as cp
  >>> from cuml.compose import ColumnTransformer
  >>> from cuml.preprocessing import Normalizer
  >>> ct = ColumnTransformer(
  ...     [("norm1", Normalizer(norm='l1'), [0, 1]),
  ...      ("norm2", Normalizer(norm='l1'), slice(2, 4))])
  >>> X = cp.array([[0., 1., 2., 2.],
  ...               [1., 1., 0., 1.]])
  >>> # Normalizer scales each row of X to unit norm. A separate scaling
  >>> # is applied for the two first and two last elements of each
  >>> # row independently.
  >>> ct.fit_transform(X)
  array([[0. , 1. , 0.5, 0.5],
         [0.5, 0.5, 0. , 1. ]])
class_docstr_tok: ["Applies","transformers","to","columns","of","an","array","or","dataframe",".","This","estimator","allows","different","columns","or","column","subsets","of","the","input","to","be","transformed","separately","and","the","features","generated","by","each","transformer","will","be","concatenated","to","form","a","single","feature","space",".","This","is","useful","for","heterogeneous","or","columnar","data",",","to","combine","several","feature","extraction","mechanisms","or","transformations","into","a","single","transformer",".","Parameters","--","--","--","--","--","transformers",":","list","of","tuples","List","of","(","name",",","transformer",",","columns",")","tuples","specifying","the","transformer","objects","to","be","applied","to","subsets","of","the","data",":","*","name",":","str","Like","in","Pipeline","and","FeatureUnion",",","this","allows","the","transformer","and","its","parameters","to","be","set","using","``","set_params","``","and","searched","in","grid","search",".","*","transformer",":","{","'drop","'",",","'passthrough","'","}","or","estimator","Estimator","must","support","`","fit","`","and","`","transform","`",".","Special-cased","strings","'drop","'","and","'passthrough","'","are","accepted","as","well",",","to","indicate","to","drop","the","columns","or","to","pass","them","through","untransformed",",","respectively",".","*","columns",":","str",",","array-like","of","str",",","int",",","array-like","of","int",",","array-like","of","bool",",","slice","or","callable","Indexes","the","data","on","its","second","axis",".","Integers","are","interpreted","as","positional","columns",",","while","strings","can","reference","DataFrame","columns","by","name",".","A","scalar","string","or","int","should","be","used","where","``","transformer","``","expects","X","to","be","a","1d","array-like","(","vector",")",",","otherwise","a","2d","array","will","be","passed","to","the","transformer",".","A","callable","is","passed","the","input","data","`","X","`","and","can","return","any","of","the","above",".","To","select","multiple","columns","by","name","or","dtype",",","you","can","use",":","obj",":","`","make_column_selector","`",".","remainder",":","{","'drop","'",",","'passthrough","'","}","or","estimator",",","default='drop'","By","default",",","only","the","specified","columns","in","`","transformers","`","are","transformed","and","combined","in","the","output",",","and","the","non-specified","columns","are","dropped",".","(","default","of","``","'drop","'","``",")",".","By","specifying","``","remainder='passthrough","'","``",",","all","remaining","columns","that","were","not","specified","in","`","transformers","`","will","be","automatically","passed","through",".","This","subset","of","columns","is","concatenated","with","the","output","of","the","transformers",".","By","setting","``","remainder","``","to","be","an","estimator",",","the","remaining","non-specified","columns","will","use","the","``","remainder","``","estimator",".","The","estimator","must","support","`","fit","`","and","`","transform","`",".","Note","that","using","this","feature","requires","that","the","DataFrame","columns","input","at","`","fit","`","and","`","transform","`","have","identical","order",".","sparse_threshold",":","float",",","default=0.3","If","the","output","of","the","different","transformers","contains","sparse","matrices",",","these","will","be","stacked","as","a","sparse","matrix","if","the","overall","density","is","lower","than","this","value",".","Use","``","sparse_threshold=0","``","to","always","return","dense",".","When","the","transformed","output","consists","of","all","dense","data",",","the","stacked","result","will","be","dense",",","and","this","keyword","will","be","ignored",".","n_jobs",":","int",",","default=None","Number","of","jobs","to","run","in","parallel",".","``","None","``","means","1","unless","in","a",":","obj",":","`","joblib.parallel_backend","`","context",".","``","-1","``","means","using","all","processors",".","for","more","details",".","transformer_weights",":","dict",",","default=None","Multiplicative","weights","for","features","per","transformer",".","The","output","of","the","transformer","is","multiplied","by","these","weights",".","Keys","are","transformer","names",",","values","the","weights",".","verbose",":","bool",",","default=False","If","True",",","the","time","elapsed","while","fitting","each","transformer","will","be","printed","as","it","is","completed",".","Attributes","--","--","--","--","--","transformers_",":","list","The","collection","of","fitted","transformers","as","tuples","of","(","name",",","fitted_transformer",",","column",")",".","`","fitted_transformer","`","can","be","an","estimator",",","'drop","'",",","or","'passthrough","'",".","In","case","there","were","no","columns","selected",",","this","will","be","the","unfitted","transformer",".","If","there","are","remaining","columns",",","the","final","element","is","a","tuple","of","the","form",":","(","'remainder","'",",","transformer",",","remaining_columns",")","corresponding","to","the","``","remainder","``","parameter",".","If","there","are","remaining","columns",",","then","``","len","(","transformers_",")","==len","(","transformers",")","+1","``",",","otherwise","``","len","(","transformers_",")","==len","(","transformers",")","``",".","named_transformers_",":",":","class",":","`","~sklearn.utils.Bunch","`","Read-only","attribute","to","access","any","transformer","by","given","name",".","Keys","are","transformer","names","and","values","are","the","fitted","transformer","objects",".","sparse_output_",":","bool","Boolean","flag","indicating","whether","the","output","of","``","transform","``","is","a","sparse","matrix","or","a","dense","numpy","array",",","which","depends","on","the","output","of","the","individual","transformers","and","the","`","sparse_threshold","`","keyword",".","Notes","--","--","-","The","order","of","the","columns","in","the","transformed","feature","matrix","follows","the","order","of","how","the","columns","are","specified","in","the","`","transformers","`","list",".","Columns","of","the","original","feature","matrix","that","are","not","specified","are","dropped","from","the","resulting","transformed","feature","matrix",",","unless","specified","in","the","`","passthrough","`","keyword",".","Those","columns","specified","with","`","passthrough","`","are","added","at","the","right","to","the","output","of","the","transformers",".","See","Also","--","--","--","--","make_column_transformer",":","Convenience","function","for","combining","the","outputs","of","multiple","transformer","objects","applied","to","column","subsets","of","the","original","feature","space",".","make_column_selector",":","Convenience","function","for","selecting","columns","based","on","datatype","or","the","columns","name","with","a","regex","pattern",".","Examples","--","--","--","--",">",">",">","import","cupy","as","cp",">",">",">","from","cuml.compose","import","ColumnTransformer",">",">",">","from","cuml.preprocessing","import","Normalizer",">",">",">","ct","=","ColumnTransformer","(","...","[","(","``","norm1","''",",","Normalizer","(","norm='l1","'",")",",","[","0",",","1","]",")",",","...","(","``","norm2","''",",","Normalizer","(","norm='l1","'",")",",","slice","(","2",",","4",")",")","]",")",">",">",">","X","=","cp.array","(","[","[","0.",",","1.",",","2.",",","2",".","]",",","...","[","1.",",","1.",",","0.",",","1",".","]","]",")",">",">",">","#","Normalizer","scales","each","row","of","X","to","unit","norm",".","A","separate","scaling",">",">",">","#","is","applied","for","the","two","first","and","two","last","elements","of","each",">",">",">","#","row","independently",".",">",">",">","ct.fit_transform","(","X",")","array","(","[","[","0.",",","1.",",","0.5",",","0.5","]",",","[","0.5",",","0.5",",","0.",",","1",".","]","]",")"]
docstr: Get feature names from all transformers.
  
  Returns
  -------
  feature_names : list of strings
      Names of the features produced by transform.
docstr_tok: ["Get","feature","names","from","all","transformers",".","Returns","--","--","--","-","feature_names",":","list","of","strings","Names","of","the","features","produced","by","transform","."]
code: def get_feature_names(self):
      """Get feature names from all transformers.
  
      Returns
      -------
      feature_names : list of strings
          Names of the features produced by transform.
      """
      check_is_fitted(self)
      feature_names = []
      for name, trans, column, _ in self._iter(fitted=True):
          if trans == "drop" or (
              hasattr(column, "__len__") and not len(column)
          ):
              continue
          if trans == "passthrough":
              if hasattr(self, "_df_columns"):
                  if (not isinstance(column, slice)) and all(
                      isinstance(col, str) for col in column
                  ):
                      feature_names.extend(column)
                  else:
                      feature_names.extend(self._df_columns[column])
              else:
                  indices = np.arange(self._n_features)
                  feature_names.extend(
                      ["x%d" % i for i in indices[column]]
                  )
              continue
          if not hasattr(trans, "get_feature_names"):
              raise AttributeError(
                  "Transformer %s (type %s) does not "
                  "provide get_feature_names."
                  % (str(name), type(trans).__name__)
              )
          feature_names.extend(
              [name + "__" + f for f in trans.get_feature_names()]
          )
      return feature_names
  
imports: from ..preprocessing import FunctionTransformer
  from ....thirdparty_adapters import check_array
  from ..utils.validation import check_is_fitted
  from ..utils.skl_dependencies import TransformerMixin, BaseComposition, BaseEstimator
  from cuml.internals import _deprecate_pos_args
  from cuml.internals.array_sparse import SparseCumlArray
  from cuml.internals.global_settings import _global_settings_data
  import cuml
  from itertools import chain
  from itertools import compress
  from joblib import Parallel
  import functools
  import timeit
  import numbers
  from cuml.internals.import_utils import has_sklearn
  from contextlib import contextmanager
  from collections import defaultdict
  import warnings
  from cuml.internals.safe_imports import cpu_only_import_from
  from cuml.internals.safe_imports import gpu_only_import_from
  from cuml.internals.safe_imports import cpu_only_import
  from cuml.internals.safe_imports import gpu_only_import
label_desc: Use image node_id 11 for calling the ColumnTransformer obj's underlying member method code with example usage: obj.get_feature_names() and returns: feature_names