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 估计器必须支持fit和transform。特殊大小写的字符串‘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 估计器。估计器必须支持fit和transform。请注意,使用此特性需要在fit和transform中输入的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 关键字。 |
另见
sklearn.compose.make_column_transformer
便利功能,用于组合应用于原始特征空间的列子集的多个变压器对象的输出。
sklearn.compose.make_column_selector
便利功能,用于基于数据类型或带有正则表达式模式的列名称选择列。
注
转换后的特征矩阵中列的顺序遵循transformers
列表中列的指定顺序。未指定的原始特征矩阵的列将从结果转换的特征矩阵中删除,除非在passthrough
关键字中指定。用passthrough
指定的列将被添加到转换器器输出的右侧。
示例
>>> import numpy as np
>>> from sklearn.compose import ColumnTransformer
>>> from sklearn.preprocessing import Normalizer
>>> ct = ColumnTransformer(
... [("norm1", Normalizer(norm='l1'), [0, 1]),
... ("norm2", Normalizer(norm='l1'), slice(2, 4))])
>>> 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.5, 0.5],
[0.5, 0.5, 0. , 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的结果的堆叠是输出维度的转换之和。如果结果是稀疏矩阵,则一切都将转换为稀疏矩阵。 |