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'}
估计器必须支持 fit 和 transform。也接受特殊处理的字符串 ‘drop’ 和 ‘passthrough’,分别表示丢弃列或不做转换直接通过。
- column(s)字符串或整数,字符串或整数的类似数组,切片,布尔掩码数组或可调用对象
按其第二轴(列)对数据进行索引。整数被解释为位置列,而字符串可以通过名称引用 DataFrame 列。当
transformer
期望 X 为 1d 类似数组(向量)时,应使用标量字符串或整数,否则将把 2d 数组传递给转换器。可调用对象将接收输入数据 X 并可以返回上述任何类型。
- remainder{'drop', 'passthrough'} 或 估计器, 默认为 'drop'
默认情况下,输出中只转换和组合 transformers 中指定的列,未指定的列会被丢弃(默认为
'drop'
)。通过指定remainder='passthrough'
,所有未在 transformers 中指定的剩余列将自动直接通过。这些列的子集将与转换器的输出进行连接。通过将remainder
设置为估计器,剩余的未指定列将使用该remainder
估计器。该估计器必须支持 fit 和 transform。- 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)¶