dask_ml.compose.ColumnTransformer

dask_ml.compose.ColumnTransformer

dask_ml.compose.ColumnTransformer(transformers, remainder='drop', sparse_threshold=0.3, n_jobs=1, transformer_weights=None, preserve_dataframe=True)

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

实验性:某些行为可能在不同版本之间更改,恕不另行通知。

这个估计器允许对输入的不同的列或列子集分别进行转换,并将结果组合到一个统一的特征空间中。这对于异构或列式数据非常有用,可以将多个特征提取机制或转换组合成一个单一的转换器。

用户指南 中了解更多信息。

0.9.0 版本新增。

注意

这需要 scikit-learn 0.20.0 或更高版本。

参数
transformers元组列表

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

name字符串

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

transformer估计器或 {'passthrough', 'drop'}

估计器必须支持 fittransform。也接受特殊处理的字符串 ‘drop’ 和 ‘passthrough’,分别表示丢弃列或不做转换直接通过。

column(s)字符串或整数,字符串或整数的类似数组,切片,布尔掩码数组或可调用对象

按其第二轴(列)对数据进行索引。整数被解释为位置列,而字符串可以通过名称引用 DataFrame 列。当 transformer 期望 X 为 1d 类似数组(向量)时,应使用标量字符串或整数,否则将把 2d 数组传递给转换器。可调用对象将接收输入数据 X 并可以返回上述任何类型。

remainder{'drop', 'passthrough'} 或 估计器, 默认为 'drop'

默认情况下,输出中只转换和组合 transformers 中指定的列,未指定的列会被丢弃(默认为 'drop')。通过指定 remainder='passthrough',所有未在 transformers 中指定的剩余列将自动直接通过。这些列的子集将与转换器的输出进行连接。通过将 remainder 设置为估计器,剩余的未指定列将使用该 remainder 估计器。该估计器必须支持 fittransform

sparse_threshold浮点数, 默认为 0.3

如果转换后的输出包含稀疏数据和密集数据的混合,当密度低于此值时,将堆叠为稀疏矩阵。使用 sparse_threshold=0 将始终返回密集数组。当转换后的输出全部为稀疏或全部为密集数据时,堆叠结果将分别为稀疏或密集,此时此关键字将被忽略。

n_jobs整数或 None,可选 (默认为 None)

并行运行的任务数量。None 表示 1,除非在 joblib.parallel_backend 上下文中使用。-1 表示使用所有处理器。有关更多详细信息,请参见术语表

transformer_weights字典,可选

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

preserve_dataframe布尔值, (默认为 True)

连接结果时是否保留 pandas DataFrames。

警告

保留 DataFrame 的默认行为与 scikit-learn 的当前行为不同。如果您需要确保输出与 scikit-learn 的 ColumnTransformer 匹配,请设置 preserve_dataframe=False

属性
transformers_列表

拟合后的转换器集合,格式为 (名称, 拟合后的转换器, 列) 元组。fitted_transformer 可以是估计器、‘drop’ 或 ‘passthrough’。如果存在剩余列,则最后一个元素是 (‘remainder’, 转换器, 剩余列) 形式的元组,对应于 remainder 参数。如果存在剩余列,则 len(transformers_)==len(transformers)+1,否则 len(transformers_)==len(transformers)

named_transformers_Bunch 对象,一个支持属性访问的字典

按名称访问拟合后的转换器。

sparse_output_布尔值

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

另请参见

dask_ml.compose.make_column_transformer

方便函数,用于组合应用于原始特征空间列子集的多个转换器对象的输出。

说明

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

示例

>>> from dask_ml.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(X[, y])

使用 X 拟合所有转换器。

fit_transform(X[, y])

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

get_feature_names_out([input_features])

获取转换的输出特征名称。

get_metadata_routing()

获取此对象的元数据路由。

get_params([deep])

获取此估计器的参数。

set_output(*[, transform])

设置调用 "transform""fit_transform" 时的输出容器。

set_params(**kwargs)

设置此估计器的参数。

transform(X, **params)

由每个转换器分别转换 X,并连接结果。

__init__(transformers, remainder='drop', sparse_threshold=0.3, n_jobs=1, transformer_weights=None, preserve_dataframe=True)