ColumnTransformer#
- class sklearn.compose.ColumnTransformer(transformers, *, remainder='drop', sparse_threshold=0.3, n_jobs=None, transformer_weights=None, verbose=False, verbose_feature_names_out=True, force_int_remainder_cols=True)[源代码]#
将转换器复制到数组或pandas DataFrame的列。
该估计器允许对输入的不同列或列子集进行单独转换,并且每个Transformer生成的特征将级联以形成单个特征空间。这对于异类或列数据很有用,可以将多个特征提取机制或转换组合到单个Transformer中。
阅读更多的 User Guide .
Added in version 0.20.
- 参数:
- transformers元组列表
(名称、Transformer、列)二元组列表,指定要应用于数据子集的Transformer对象。
- 名称str
与在Pipeline和ApplureUnion中一样,这允许使用以下命令设置Transformer及其参数
set_params
并在网格搜索中进行搜索。- Transformer“drop”、“passthrough”}或估计器
估算者必须支持 fit 和 transform .特殊大小写的字符串“drop”和“passthrough”也被接受,分别指示丢弃列或将它们传递未转换的列。
- 列字符串,类数组的字符串,int,类数组的字符串, 布尔、切片或可调用的类数组
在第二个轴上对数据进行索引。Integer被解释为位置列,而字符串可以通过名称引用DataFrame列。 应使用纯量字符串或int,
transformer
期望X是一个类似1d数组的(载体),否则2d数组将被传递给Transformer。可调用对象传递输入数据X
并可以返回上述任何一项。要按名称或数据类型选择多个列,您可以使用make_column_selector
.
- remainder' drop ',' pasthrough '}或估计器,默认=' drop '
默认情况下,只有中的指定列
transformers
在输出中进行转换和组合,并删除未指定的列。(默认'drop'
).通过指定remainder='passthrough'
,中未指定的所有剩余列transformers
,但存在于传递给的数据中fit
将自动通过。该列子集与变换器的输出级联。对于金字塔,期间看不到额外的柱子fit
将被排除在transform
.通过设置remainder
要成为估计器,其余未指定列将使用remainder
估计者。估算者必须支持 fit 和 transform .请注意,使用此功能要求DataFrame列在 fit 和 transform 有相同的顺序。- sparse_threshold浮点数,默认值=0.3
如果不同变换器的输出包含稀疏矩阵,则如果总密度低于此值,这些矩阵将堆叠为稀疏矩阵。使用
sparse_threshold=0
始终返回密集。 当转换后的输出由所有密集数据组成时,堆叠的结果将是密集的,并且该关键字将被忽略。- n_jobsint,默认=无
要并行运行的作业数。
None
意思是1,除非在a中joblib.parallel_backend
上下文-1
意味着使用所有处理器。看到 Glossary 了解更多详细信息。- transformer_weightsdict,默认=无
每个Transformer的特征的相乘权重。Transformer的输出乘以这些权重。键是Transformer名称,值是权重。
- verbose布尔,默认=假
如果为True,则安装每个Transformer时所花费的时间将在安装完毕时打印出来。
- verbose_feature_names_out布尔、字符串或Callable [[str, str] ,url],默认=True
如果为True,
ColumnTransformer.get_feature_names_out
将在所有功能名称的前面加上生成该功能的Transformer的名称。相当于设置verbose_feature_names_out="{transformer_name}__{feature_name}"
.如果为假,
ColumnTransformer.get_feature_names_out
不会在任何功能名称前加上前面,并且如果功能名称不唯一,就会出错。如果
Callable[[str, str], str]
,ColumnTransformer.get_feature_names_out
将使用Transformer的名称重命名所有功能。可调用对象的第一个参数是Transformer名称,第二个参数是特性名称。返回的字符串将是新功能名称。如果
str
,它必须是一个准备好格式化的字符串。给定的字符串将使用两个字段名称进行格式化:transformer_name
和feature_name
.例如"{feature_name}__{transformer_name}"
.看到str.format
从标准库中获取更多信息。
Added in version 1.0.
在 1.6 版本发生变更:
verbose_feature_names_out
可以是可调用的字符串或要格式化的字符串。- force_int_remainder_cols布尔,默认=True
强制最后一个条目的列
transformers_
,对应于“剩余”Transformer,始终存储为索引(int)而不是列名(stra)。参见description of thetransformers_
详细信息属性。备注
如果您不访问中剩余列的列列表
transformers_
适合属性,不需要设置该参数。Added in version 1.5.
在 1.7 版本发生变更: 的默认值
force_int_remainder_cols
将从True
到False
在1.7版本中。
- 属性:
- transformers_列表
作为(名称、fitted_Transformer、列)的二元组的已安装变压器集合。
fitted_transformer
可以是估计器,或者'drop'
;'passthrough'
被等效的替换FunctionTransformer
.如果没有选择柱子,这将是未安装的Transformer。如果还有剩余列,则最后一个元素是形式为:(' restaurant ',Transformer,restaurant_lines)的数组,对应于remainder
参数.如果还有剩余列,那么len(transformers_)==len(transformers)+1
否则len(transformers_)==len(transformers)
.在 1.5 版本发生变更: 如果还有剩余列和
force_int_remainder_cols
为True,其余列始终由输入中的位置索引表示X
(as在旧版本中)。如果force_int_remainder_cols
为False,则该格式会尝试与其他转换器的格式相匹配:如果所有列都作为列名提供 (str
),则其余列存储为列名;如果所有列都作为掩码数组提供, (bool
),其余列也是如此;在所有其他情况下,其余列都存储为索引 (int
).named_transformers_
:Bunch
群按名称查看已安装的Transformer。
- sparse_output_bool
布尔标志,指示的输出是否
transform
是稀疏矩阵或密集麻木阵列,这取决于各个变换器的输出和sparse_threshold
关键字- output_indices_dict
从每个Transformer名称到切片的字典,其中切片对应于转换输出中的索引。这对于检查哪个Transformer负责哪些转换的特征很有用。
Added in version 1.0.
- n_features_in_int
期间看到的功能数量 fit .仅在基础转换器在合适时公开此类属性时才定义。
Added in version 0.24.
- feature_names_in_ :nd形状数组 (
n_features_in_
,)nd数组形状( Names of features seen during fit. Defined only when
X
has feature names that are all strings.Added in version 1.0.
参见
make_column_transformer
方便函数,用于组合应用于原始特征空间的列子集的多个Transformer对象的输出。
make_column_selector
方便功能,用于根据数据类型或具有regex模式的列名称选择列。
注意到
转换后的要素矩阵中列的顺序遵循
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. ]])
ColumnTransformer
可以通过将列设置为字符串来配置需要1d数组的Transformer:>>> from sklearn.feature_extraction.text import CountVectorizer >>> from sklearn.preprocessing import MinMaxScaler >>> import pandas as pd >>> X = pd.DataFrame({ ... "documents": ["First item", "second one here", "Is this the last?"], ... "width": [3, 4, 5], ... }) >>> # "documents" is a string which configures ColumnTransformer to >>> # pass the documents column as a 1d array to the CountVectorizer >>> ct = ColumnTransformer( ... [("text_preprocess", CountVectorizer(), "documents"), ... ("num_preprocess", MinMaxScaler(), ["width"])]) >>> X_trans = ct.fit_transform(X)
有关更详细的使用示例,请参阅 混合类型的列Transformer .
- fit(X, y=None, **params)[源代码]#
使用X安装所有变压器。
- 参数:
- X形状(n_samples,n_features)的{类数组,n_features}
输入数据,其中指定的子集用于拟合变压器。
- y数组形状(n_samples,...),默认值=无
监督学习的目标。
- **paramsdict,默认=无
要传递给底层转换器的参数
fit
和transform
方法.只有在启用元数据路由(您可以使用启用元数据路由)时才能传递此消息
sklearn.set_config(enable_metadata_routing=True)
.Added in version 1.4.
- 返回:
- selfColumnTransformer
这个估计器。
- fit_transform(X, y=None, **params)[源代码]#
适应所有转换器、转换数据并连接结果。
- 参数:
- X形状(n_samples,n_features)的{类数组,n_features}
输入数据,其中指定的子集用于拟合变压器。
- y形状类似数组(n_samples,),默认=无
监督学习的目标。
- **paramsdict,默认=无
要传递给底层转换器的参数
fit
和transform
方法.只有在启用元数据路由(您可以使用启用元数据路由)时才能传递此消息
sklearn.set_config(enable_metadata_routing=True)
.Added in version 1.4.
- 返回:
- X_t{类数组,稀疏矩阵}的 形状(n_samples,sum_n_components)
变压器的水平堆叠结果。sum_n_components是变压器上n_components(输出维度)的和。如果任何结果是稀疏矩阵,则所有结果都将转换为稀疏矩阵。
- get_feature_names_out(input_features=None)[源代码]#
获取用于转换的输出要素名称。
- 参数:
- input_features字符串或无的类数组,默认=无
输入功能。
如果
input_features
是None
那么feature_names_in_
在中用作功能名称。如果feature_names_in_
未定义,则生成以下输入要素名称:["x0", "x1", ..., "x(n_features_in_ - 1)"]
.如果
input_features
是一个类似阵列的,那么input_features
必须匹配feature_names_in_
如果feature_names_in_
是定义的。
- 返回:
- feature_names_out字符串对象的nd数组
转换的功能名称。
- get_metadata_routing()[源代码]#
获取此对象的元数据路由。
请检查 User Guide 关于路由机制如何工作。
Added in version 1.4.
- 返回:
- routingMetadataRouter
A
MetadataRouter
封装路由信息。
- get_params(deep=True)[源代码]#
获取此估计器的参数。
返回构造函数中给出的参数以及包含在
transformers
的ColumnTransformer
.- 参数:
- deep布尔,默认=True
如果为True,将返回此估计量和包含的作为估计量的子对象的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- set_output(*, transform=None)[源代码]#
当时设置输出容器
"transform"
和"fit_transform"
被称为。调用
set_output
将将所有估计器的输出设置为transformers
和transformers_
.- 参数:
- transform{“默认”,“pandas”,“polars”},默认=无
配置输出
transform
和fit_transform
."default"
:Transformer的默认输出格式"pandas"
:DataFrame输出"polars"
:两极输出None
:转换配置不变
Added in version 1.4:
"polars"
添加了选项。
- 返回:
- self估计器实例
估计实例。
- set_params(**kwargs)[源代码]#
设置此估计器的参数。
有效的参数键可以与
get_params()
.请注意,您可以直接设置中包含的估计器的参数transformers
的ColumnTransformer
.- 参数:
- **kwargsdict
估计参数。
- 返回:
- selfColumnTransformer
这个估计器。
- transform(X, **params)[源代码]#
通过每个Transformer分别转换X,并连接结果。
- 参数:
- X形状(n_samples,n_features)的{类数组,n_features}
要按子集转换的数据。
- **paramsdict,默认=无
要传递给底层转换器的参数
transform
法只有在启用元数据路由(您可以使用启用元数据路由)时才能传递此消息
sklearn.set_config(enable_metadata_routing=True)
.Added in version 1.4.
- 返回:
- X_t{类数组,稀疏矩阵}的 形状(n_samples,sum_n_components)
变压器的水平堆叠结果。sum_n_components是变压器上n_components(输出维度)的和。如果任何结果是稀疏矩阵,则所有结果都将转换为稀疏矩阵。