函数变换器#
- class sklearn.preprocessing.FunctionTransformer(func=None, inverse_func=None, *, validate=False, accept_sparse=False, check_inverse=True, feature_names_out=None, kw_args=None, inv_kw_args=None)[source]#
从任意可调用对象构造变换器。
FunctionTransformer 将其 X(以及可选的 y)参数转发给用户定义的函数或函数对象,并返回此函数的结果。这对于无状态转换非常有用,例如取频率的对数、进行自定义缩放等。
注意:如果使用 lambda 作为函数,则生成的变换器将不可序列化。
0.17 版本中新增。
在 用户指南 中了解更多信息。
- 参数:
- func可调用对象,默认为 None
用于转换的可调用对象。这将传递与 transform 相同的参数,并转发 args 和 kwargs。如果 func 为 None,则 func 将为恒等函数。
- inverse_func可调用对象,默认为 None
用于逆变换的可调用对象。它将传递与逆变换相同的参数,并转发 args 和 kwargs。如果 inverse_func 为 None,则 inverse_func 将为恒等函数。
- validate布尔值,默认为 False
指示在调用
func
之前是否应检查输入 X 数组。可能性如下:如果为 False,则没有输入验证。
如果为 True,则 X 将转换为二维 NumPy 数组或稀疏矩阵。如果转换不可行,则会引发异常。
0.22 版本中的变更:
validate
的默认值已从 True 更改为 False。- accept_sparse布尔值,默认为 False
指示 func 是否接受稀疏矩阵作为输入。如果 validate 为 False,则此设置无效。否则,如果 accept_sparse 为 false,则稀疏矩阵输入将导致引发异常。
- check_inverse布尔值,默认为 True
是否检查
func
后跟inverse_func
是否会导致原始输入。它可用于健全性检查,在条件未满足时发出警告。0.20 版本中添加。
- feature_names_out可调用对象、'one-to-one' 或 None,默认为 None
确定
get_feature_names_out
方法将返回的特征名称列表。如果为 'one-to-one',则输出特征名称将等于输入特征名称。如果它是一个可调用对象,则它必须接受两个位置参数:此FunctionTransformer
(self
) 和输入特征名称的类数组 (input_features
)。它必须返回输出特征名称的类数组。get_feature_names_out
方法仅在feature_names_out
不为 None 时定义。有关更多详细信息,请参阅
get_feature_names_out
。1.1 版本中添加。
- kw_args字典,默认为 None
要传递给 func 的其他关键字参数的字典。
0.18 版本中添加。
- inv_kw_args字典,默认为 None
要传递给 inverse_func 的其他关键字参数的字典。
0.18 版本中添加。
- 属性:
另请参阅
备注
如果
func
返回具有columns
属性的输出,则该列将强制与get_feature_names_out
的输出一致。示例
>>> import numpy as np >>> from sklearn.preprocessing import FunctionTransformer >>> transformer = FunctionTransformer(np.log1p) >>> X = np.array([[0, 1], [2, 3]]) >>> transformer.transform(X) array([[0. , 0.6931...], [1.0986..., 1.3862...]])
- fit(X, y=None)[source]#
通过检查 X 来拟合变换器。
如果
validate
为True
,则将检查X
。- 参数:
- X如果
validate=True
,则形状为 (n_samples, n_features) 的 {类数组、稀疏矩阵},否则为func
可以处理的任何对象 输入数组。
- y忽略
未使用,出于约定,此处用于 API 一致性。
- X如果
- 返回:
- self对象
FunctionTransformer 类实例。
- fit_transform(X, y=None, **fit_params)[source]#
拟合数据,然后转换它。
使用可选参数
fit_params
将变换器拟合到X
和y
,并返回X
的转换版本。- 参数:
- X形状为 (n_samples, n_features) 的类数组
输入样本。
- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组,默认为 None
目标值(对于无监督转换则为 None)。
- **fit_params字典
附加拟合参数。
- 返回:
- X_new形状为 (n_samples, n_features_new) 的 ndarray 数组
转换后的数组。
- get_feature_names_out(input_features=None)[source]#
获取转换的输出特征名称。
仅当
feature_names_out
不为 None 时才定义此方法。- 参数:
- input_features类数组的 str 或 None,默认为 None
输入特征名称。
如果
input_features
为 None,则使用feature_names_in_
作为输入特征名称。如果feature_names_in_
未定义,则生成名称:[x0, x1, ..., x(n_features_in_ - 1)]
。如果
input_features
是类数组,则如果feature_names_in_
已定义,则input_features
必须与feature_names_in_
匹配。
- 返回:
- feature_names_outstr 对象的 ndarray
转换后的特征名称。
如果
feature_names_out
为“一对一”,则返回输入特征名称(见上文的input_features
)。这需要定义feature_names_in_
和/或n_features_in_
,如果validate=True
,则会自动完成。或者,您可以在func
中设置它们。如果
feature_names_out
是一个可调用对象,则它将使用两个参数self
和input_features
调用,并返回此方法返回的值。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查看 用户指南,了解路由机制的工作原理。
- 返回:
- routingMetadataRequest
一个
MetadataRequest
封装了路由信息。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deep布尔值,默认为 True
如果为 True,将返回此估计器和包含的作为估计器的子对象的参数。
- 返回:
- params字典
参数名称与其值的映射。
- inverse_transform(X)[source]#
使用逆函数转换 X。
- 参数:
- X形状为 (n_samples, n_features) 的 {类数组,稀疏矩阵},如果
validate=True
否则为inverse_func
可以处理的任何对象 输入数组。
- X形状为 (n_samples, n_features) 的 {类数组,稀疏矩阵},如果
- 返回:
- X_out类数组,形状 (n_samples, n_features)
转换后的输入。
- set_output(*, transform=None)[source]#
设置输出容器。
请参阅 介绍 set_output API,了解如何使用此 API 的示例。
- 参数:
- transform{"default", "pandas", "polars"},默认为 None
配置
transform
和fit_transform
的输出。"default"
:转换器的默认输出格式"pandas"
:DataFrame 输出"polars"
:Polars 输出None
:转换配置保持不变
版本 1.4 中添加: 添加了
"polars"
选项。
- 返回:
- self估计器实例
估计器实例。