# ColumnTransformer

### *class* cuml.compose.ColumnTransformer(\*args, \*\*kwargs)[[source]](https://github.com/NVIDIA/cuml/blob/93418baf5/python/cuml/cuml/_thirdparty/sklearn/preprocessing/_column_transformer.py#L435)

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 (name, transformer, columns) tuples specifying the
    transformer objects to be applied to subsets of the data:
    * name
      : Like in Pipeline and FeatureUnion, this allows the transformer and
        its parameters to be set using `set_params` and searched in grid
        search.
    * transformer
      : Estimator must support [`fit`](#cuml.compose.ColumnTransformer.fit) and [`transform`](#cuml.compose.ColumnTransformer.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
      : 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
        [`make_column_selector`](../cuml.compose.make_column_selector/index.html.md#cuml.compose.make_column_selector).

  **remainder**
  : 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`](#cuml.compose.ColumnTransformer.fit) and [`transform`](#cuml.compose.ColumnTransformer.transform).
    Note that using this feature requires that the DataFrame columns
    input at [`fit`](#cuml.compose.ColumnTransformer.fit) and [`transform`](#cuml.compose.ColumnTransformer.transform) have identical order.

  **sparse_threshold**
  : 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**
  : Number of jobs to run in parallel.
    `None` means 1 unless in a `joblib.parallel_backend` context.
    `-1` means using all processors.
    for more details.

  **transformer_weights**
  : Multiplicative weights for features per transformer. The output of the
    transformer is multiplied by these weights. Keys are transformer names,
    values the weights.

  **verbose**
  : If True, the time elapsed while fitting each transformer will be
    printed as it is completed.
* **Attributes:**
  **transformers_**
  : 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_`](#cuml.compose.ColumnTransformer.named_transformers_)
  : Access the fitted transformer by name.

  **sparse_output_**
  : 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.

### Methods

| [`fit`](#cuml.compose.ColumnTransformer.fit)(X[, y])                             | Fit all transformers using X.                                     |
|------------------------------------------------------------------------------------------|-------------------------------------------------------------------|
| [`fit_transform`](#cuml.compose.ColumnTransformer.fit_transform)(X[, y])                   | Fit all transformers, transform the data and concatenate results. |
| [`get_feature_names_out`](#cuml.compose.ColumnTransformer.get_feature_names_out)([input_features]) | Get output feature names for transformation.                      |
| [`get_params`](#cuml.compose.ColumnTransformer.get_params)([deep])                      | Get parameters for this estimator.                                |
| [`set_params`](#cuml.compose.ColumnTransformer.set_params)(\*\*kwargs)                  | Set the parameters of this estimator.                             |
| [`transform`](#cuml.compose.ColumnTransformer.transform)(X)                            | Transform X separately by each transformer, concatenate results.  |

#### SEE ALSO
[`make_column_transformer`](../cuml.compose.make_column_transformer/index.html.md#cuml.compose.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`](../cuml.compose.make_column_selector/index.html.md#cuml.compose.make_column_selector)
: Convenience function for selecting columns based on datatype or the columns name with a regex pattern.

### 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.

### Examples

```pycon
>>> 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. ]])
```

<!-- !! processed by numpydoc !! -->

#### fit(X, y=None) → [ColumnTransformer](#cuml.compose.ColumnTransformer)[[source]](https://github.com/NVIDIA/cuml/blob/93418baf5/python/cuml/cuml/_thirdparty/sklearn/preprocessing/_column_transformer.py#L882)

Fit all transformers using X.

* **Parameters:**
  **X**
  : Input data, of which specified subsets are used to fit the
    transformers.

  **y**
  : Targets for supervised learning.
* **Returns:**
  **self**
  : This estimator

<!-- !! processed by numpydoc !! -->

#### fit_transform(X, y=None)[[source]](https://github.com/NVIDIA/cuml/blob/93418baf5/python/cuml/cuml/_thirdparty/sklearn/preprocessing/_column_transformer.py#L906)

Fit all transformers, transform the data and concatenate results.

* **Parameters:**
  **X**
  : Input data, of which specified subsets are used to fit the
    transformers.

  **y**
  : Targets for supervised learning.
* **Returns:**
  **X_t**
  : hstack of results of transformers. sum_n_components is the
    sum of n_components (output dimension) over transformers. If
    any result is a sparse matrix, everything will be converted to
    sparse matrices.

<!-- !! processed by numpydoc !! -->

#### get_feature_names_out(input_features=None)[[source]](https://github.com/NVIDIA/cuml/blob/93418baf5/python/cuml/cuml/_thirdparty/sklearn/preprocessing/_column_transformer.py#L761)

Get output feature names for transformation.

* **Parameters:**
  **input_features**
  : Input feature names.
* **Returns:**
  **feature_names_out**
  : Transformed feature names.

<!-- !! processed by numpydoc !! -->

#### get_params(deep=True)[[source]](https://github.com/NVIDIA/cuml/blob/93418baf5/python/cuml/cuml/_thirdparty/sklearn/preprocessing/_column_transformer.py#L617)

Get parameters for this estimator.

Returns the parameters given in the constructor as well as the
estimators contained within the `transformers` of the
[`ColumnTransformer`](#cuml.compose.ColumnTransformer).

* **Parameters:**
  **deep**
  : If True, will return the parameters for this estimator and
    contained subobjects that are estimators.
* **Returns:**
  **params**
  : Parameter names mapped to their values.

<!-- !! processed by numpydoc !! -->

#### *property* named_transformers_

Access the fitted transformer by name.

Read-only attribute to access any transformer by given name.
Keys are transformer names and values are the fitted transformer
objects.

<!-- !! processed by numpydoc !! -->

#### set_params(\*\*kwargs)[[source]](https://github.com/NVIDIA/cuml/blob/93418baf5/python/cuml/cuml/_thirdparty/sklearn/preprocessing/_column_transformer.py#L637)

Set the parameters of this estimator.

Valid parameter keys can be listed with `get_params()`. Note that you
can directly set the parameters of the estimators contained in
`transformers` of [`ColumnTransformer`](#cuml.compose.ColumnTransformer).

* **Returns:**
  self

<!-- !! processed by numpydoc !! -->

#### transform(X)[[source]](https://github.com/NVIDIA/cuml/blob/93418baf5/python/cuml/cuml/_thirdparty/sklearn/preprocessing/_column_transformer.py#L962)

Transform X separately by each transformer, concatenate results.

* **Parameters:**
  **X**
  : The data to be transformed by subset.
* **Returns:**
  **X_t**
  : hstack of results of transformers. sum_n_components is the
    sum of n_components (output dimension) over transformers. If
    any result is a sparse matrix, everything will be converted to
    sparse matrices.

<!-- !! processed by numpydoc !! -->
