sklearn.compose.ColumnTransformer

class sklearn.compose.ColumnTransformer(transformers, *, remainder='drop', sparse_threshold=0.3, n_jobs=None, transformer_weights=None, verbose=False)

[源码]

将转换器应用于数组或pandas 的 DataFrame的列

该估计器允许独立地转换输入的不同列或列子集,并将每个转换器生成的特征连接起来形成一个单一的特征空间。这对于异构或柱状数据非常有用,可以将多个特征提取机制或转换组合成单个转换器。

用户指南中阅读更多内容

New in version 0.20.

参数 说明
transformers list of tuples
指定要应用于数据子集的转换器对象的元组列表(名称、转换器、列)。
name str
与Pipeline和FeatureUnion一样,这允许使用set_params设置变压器及其参数,并在网格搜索中进行搜索。
transformer {‘drop’, ‘passthrough’} or estimator
估计器必须支持fittransform。特殊大小写的字符串‘drop’和‘passthrough’也被接受,分别表示要删除列或将它们传递给未转换的列。
columns str, array-like of str, int, array-like of int, array-like of bool, slice or callable
在其第二轴上索引数据。整数被解释为位置列,而字符串可以按名称引用DataFrame列。应该使用标量字符串或int,如果transformer期望X是一维数组类(向量),否则2d数组将传递给转换器。可调用传递输入数据X,并可以返回上述任何内容。若要按名称或dtype选择多列,可以使用make_column_selector
remainder {‘drop’, ‘passthrough’} or estimator, default=’drop’
默认情况下,只有transformers中的指定列在输出中转换和组合,而非指定列被删除。(默认‘drop’)。通过指定remainder='passthrough',所有未在transformers中指定的其余列都将自动通过。这个列的子集与的transformers输出连接在一起。通过将remainder设置为估计器,其余未指定的列将使用remainder估计器。估计器必须支持fittransform。请注意,使用此特性需要在fittransform中输入的DataFrame列具有相同的顺序。
sparse_threshold float, default=0.3
如果不同的转换器输出含有稀疏矩阵,则如果总密度低于此值,则将这些矩阵叠加为稀疏矩阵。使用sparse_threshold=0来始终返回稠密。当转换后的输出由所有密集数据组成时,叠加的结果将是密集的,而这个关键字将被忽略。
n_jobs int, default=None
要运行的并行数。None意味1, 除非在joblib.parallel_backend环境中。-1指使用所有处理器。有关详细信息,请参Glossary
transformer_weights dict, default=None
每个转换器特征的权重。转换器的输出乘以这些权重。键是转换器名称,值权重。
verbose bool, default=False
如果是真的,安装每个变压器所需的时间将在完成时打印出来。
属性 说明
transformers_ list
安装transformers的集合,作为(name, fitted_transformer, column)的元组。fitted_transformer可以是一个估计器,‘drop’, 或者 ‘passthrough’。如果没有选择列,这将是未拟合的转换器。如果还有剩余的列,则最后一个元素是一个元组:(‘remainder’, transformer, remaining_columns),对应于remainder参数。如果还有剩余的列, 那么len(transformers_)==len(transformers)+1, 否则len(transformers_)==len(transformers)

named_transformers_Bunch
按名称访问拟合的转换器
sparse_output_ bool
布尔标志指示transform的输出是稀疏矩阵还是稠密的numpy数组,这取决于各个转换器的输出和sparse_threshold关键字。

另见

转换后的特征矩阵中列的顺序遵循transformers列表中列的指定顺序。未指定的原始特征矩阵的列将从结果转换的特征矩阵中删除,除非在passthrough关键字中指定。用passthrough指定的列将被添加到转换器器输出的右侧。

示例

>>> import numpy as np
>>> from sklearn.compose import ColumnTransformer
>>> from sklearn.preprocessing import Normalizer
>>> ct = ColumnTransformer(
...     [("norm1", Normalizer(norm='l1'), [01]),
...      ("norm2", Normalizer(norm='l1'), slice(24))])
>>> X = np.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.50.5],
       [0.50.50. , 1. ]])

方法

方法 说明
fit(self, X[, y]) 使用X拟合所有转换器
fit_transform(self, X[, y]) 拟合所有转换器,转换数据并连接结果
get_feature_names(self) 从所有转换器获取特征名称
get_params(self[, deep]) 获取此估计器的参数
set_params(self, **kwargs) 设置此估计器的参数
transform(self, X) 由每个转换器分别变换X,连接结果
__init__(self, transformers, *, remainder='drop', sparse_threshold=0.3, n_jobs=None, transformer_weights=None, verbose=False)

[源码]

初始化self。请参阅help(type(self))以获得准确的说明。

fit(self, X, y=None)

[源码]

使用X拟合所有转换器

参数 说明
X {array-like, dataframe} of shape (n_samples, n_features)
输入数据,其中指定的子集用于拟合转换器。
y array-like of shape (n_samples,…), default=None
监督学习目标
返回值 说明
self ColumnTransformer
这个估计器
fit_transform(self, X, y=None)

[源码]

拟合所有转换器,转换数据并连接结果

参数 说明
X {array-like, dataframe} of shape (n_samples, n_features)
输入数据,其中指定的子集用于拟合转换器。
y array-like of shape (n_samples,), default=None
监督学习的目标
返回值 说明
X_t {array-like, sparse matrix} of shape (n_samples, sum_n_components)
变压器的结果。transformers. sum_n_components的结果的堆叠是输出维度的转换之和。如果结果是稀疏矩阵,则一切都将转换为稀疏矩阵。
get_feature_names(self)

[源码]

从所有转换器获取特征名称

返回值 说明
feature_names list of strings
转换产生的特征的名称
get_params(self, deep=True)

[源码]

获取此估计器的参数

参数 说明
deep bool, default=True
如果为True,则将返回此估计器的参数和所包含的作为估计器的子对象。
返回值 说明
params mapping of string to any
映射到其值的参数名称
property named_transformers_

按名称访问拟合的转换器

可按给定名称访问任何转换器的只读属性。键是转换器名称,值是已拟合的转换器对象。

set_params(self, **kwargs)

[源码]

设置此估计器的参数

有效的参数键可以用get_params()列出。

返回值 说明
self -
transform(self, X)

[源码]

由各转换器分别变换X,链接结果。

参数 列表
X {array-like, dataframe} of shape (n_samples, n_features)
要由子集转换的数据
返回值 说明
X_t {array-like, sparse matrix} of shape (n_samples, sum_n_components)
变压器的结果。transformers. sum_n_components的结果的堆叠是输出维度的转换之和。如果结果是稀疏矩阵,则一切都将转换为稀疏矩阵。