当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn ColumnTransformer用法及代码示例


本文简要介绍python语言中 sklearn.compose.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)

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

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

在用户指南中阅读更多信息。

参数

transformers元组列表

(名称、转换器、列)元组列表,指定要应用于数据子集的转换器对象。

名字str

就像在 Pipeline 和 FeatureUnion 中一样,这允许使用 set_params 设置转换器及其参数并在网格搜索中进行搜索。

transformer{‘drop’, ‘passthrough’} 或估算器

估算器必须支持拟合和变换。 Special-cased 字符串 ‘drop’ 和 ‘passthrough’ 也被接受,分别指示删除列或将它们传递给未转换的列。

str、str 的类似数组、int、int 的类似数组、bool、slice 或 callable 的类似数组

在第二个轴上索引数据。整数被解释为位置列,而字符串可以按名称引用 DataFrame 列。当 transformer 期望 X 是一个一维数组(向量)时,应该使用标量字符串或 int,否则一个二维数组将被传递给转换器。可调用对象传递输入数据X,并且可以返回上述任何数据。要按名称或数据类型选择多个列,可以使用 make_column_selector

remainder{‘drop’, ‘passthrough’} 或估计器,默认='drop'

默认情况下,只有 transformers 中的指定列在输出中进行转换和组合,而未指定的列将被删除。 (默认为 'drop' )。通过指定 remainder='passthrough' ,将自动传递所有未在 transformers 中指定的剩余列。该列子集与转换器的输出连接。通过将remainder 设置为估计器,其余未指定的列将使用remainder 估计器。估计器必须支持拟合和变换。请注意,使用此函数需要 DataFrame 列输入 fit 和 transform 具有相同的顺序。

sparse_threshold浮点数,默认=0.3

如果不同转换器的输出包含稀疏矩阵,如果整体密度低于此值,则这些将堆叠为稀疏矩阵。使用 sparse_threshold=0 始终返回密集。当转换后的输出由所有密集数据组成时,堆叠的结果将是密集的,该关键字将被忽略。

n_jobs整数,默认=无

并行运行的作业数。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有处理器。有关详细信息,请参阅词汇表。

transformer_weights字典,默认=无

每个转换器的特征的乘法权重。转换器的输出乘以这些权重。键是转换器名称,值是权重。

verbose布尔,默认=假

如果为 True,则在安装每个转换器时经过的时间将在完成时打印。

verbose_feature_names_out布尔,默认=真

如果为 True,get_feature_names_out 将在所有特征名称前加上生成该特征的转换器名称。如果为 False,get_feature_names_out 将不会为任何函数名称添加前缀,并且如果函数名称不唯一,则会出错。

属性

transformers_列表

已安装转换器的集合,作为(名称、fitted_transformer、列)的元组。 fitted_transformer 可以是估计器、‘drop’ 或 ‘passthrough’。如果没有选择任何列,则这将是未安装的转换器。如果还有剩余列,则最终元素是以下形式的元组:(‘remainder’、transformer、remaining_columns),对应于remainder 参数。如果还有剩余列,则为 len(transformers_)==len(transformers)+1 ,否则为 len(transformers_)==len(transformers)

named_transformers_sklearn.utils.Bunch

按名称访问已安装的转换器。

sparse_output_bool

指示 transform 的输出是稀疏矩阵还是密集 numpy 数组的布尔标志,这取决于各个转换器的输出和 sparse_threshold 关键字。

output_indices_dict

从每个转换器名称到切片的字典,其中切片对应于转换后的输出中的索引。这对于检查哪个转换器负责哪个转换特征很有用。

n_features_in_int

拟合期间看到的特征数。仅当底层转换器在合适时公开此类属性时才定义。

注意

转换后的特征矩阵中列的顺序遵循 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. ]])

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.compose.ColumnTransformer。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。