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, transformer, column(s)),指定要应用于数据子集的转换器对象。
- name字符串
如同在 Pipeline 和 FeatureUnion 中,这允许使用
set_params
设置转换器及其参数,并在网格搜索中进行搜索。- transformer评估器或 {'passthrough', 'drop'}
评估器必须支持 fit 和 transform。也接受特殊字符串 'drop' 和 'passthrough',分别指示删除列或将它们按原样通过(不转换)。
- column(s)字符串或整数,字符串或整数的类数组对象,切片,布尔掩码数组或可调用对象
按数据的第二轴(通常是列)进行索引。整数被解释为位置列,而字符串可以按名称引用 DataFrame 列。如果
transformer
期望 X 是一个一维类数组对象(向量),则应使用标量字符串或整数,否则将把一个二维数组传递给转换器。可调用对象将接收输入数据 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 DataFrame。
警告
保留 DataFrame 的默认行为与 scikit-learn 当前的行为不同。如果需要确保输出与 scikit-learn 的 ColumnTransformer 匹配,请设置
preserve_dataframe=False
。
- 属性
- 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_布尔值
布尔标志,指示
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)¶