dask_ml.compose.ColumnTransformer
dask_ml.compose
.ColumnTransformer¶
- class 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 或更新版本。
- 参数
- 转换器元组列表
指定应用于数据子集的转换器对象的 (名称, 转换器, 列) 元组列表。
- 名字字符串
与 Pipeline 和 FeatureUnion 类似,这允许使用
set_params
设置转换器及其参数,并在网格搜索中进行搜索。- transformer估计器或 {‘passthrough’, ‘drop’}
估计器必须支持 fit 和 transform 。特殊情况下的字符串 ‘drop’ 和 ‘passthrough’ 也是可以接受的,分别表示删除列或不经过转换直接传递它们。
- 列字符串或整数,字符串或整数的类数组,切片,布尔掩码数组或可调用对象
在其第二个轴上索引数据。整数被解释为位置列,而字符串可以通过名称引用 DataFrame 列。在
transformer
期望 X 为 1d 数组(向量)的地方,应使用标量字符串或整数,否则将向 transformer 传递 2d 数组。可调用对象传递输入数据 X 并可以返回上述任何一种。
- 余数{‘drop’, ‘passthrough’} 或估计器,默认 ‘drop’
默认情况下,只有 transformers 中指定的列会在输出中进行转换和合并,未指定的列将被丢弃(
'drop'
的默认值)。通过指定remainder='passthrough'
,所有未在 transformers 中指定的剩余列将自动传递。这些列与转换器的输出连接在一起。通过将remainder
设置为一个估计器,未指定的剩余列将使用remainder
估计器。该估计器必须支持 fit 和 transform。- sparse_thresholdfloat, 默认 = 0.3
如果转换后的输出包含稀疏和密集数据的混合,如果密度低于此值,它将被堆叠为稀疏矩阵。使用
sparse_threshold=0
以始终返回密集矩阵。当转换后的输出包含所有稀疏或所有密集数据时,堆叠结果将分别为稀疏或密集,并且此关键字将被忽略。- n_jobsint 或 None, 可选 (默认=None)
Number of jobs to run in parallel.
None
means 1 unless in ajoblib.parallel_backend
context.-1
means using all processors. See Glossary for more details.- transformer_weightsdict, 可选
每个变换器的特征的乘法权重。变换器的输出将乘以这些权重。键是变换器名称,值是权重。
- preserve_dataframebool, (默认=True)
在连接结果时是否保留 pandas 数据帧。
警告
保留 DataFrames 的默认行为与 scikit-learn 的当前行为不同。如果需要确保输出与 scikit-learn 的 ColumnTransformer 匹配,请设置
preserve_dataframe=False
。
- 属性
- transformers_列表
已拟合变换器的集合,作为 (名称, 已拟合变换器, 列) 的元组。已拟合变换器 可以是一个估计器、’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,然后连接结果。