函数变换器#

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 版本中添加。

属性:
n_features_in_整数

拟合期间看到的特征数量。

0.24 版本中添加。

feature_names_in_形状为 (n_features_in_,) 的 ndarray

拟合期间看到的特征名称。仅当 X 具有全部为字符串的特征名称时才定义。

1.0 版本中添加。

另请参阅

最大绝对值缩放器

按其最大绝对值缩放每个特征。

标准缩放器

通过去除均值并缩放为单位方差来标准化特征。

标签二值化器

以一对多方式二值化标签。

多标签二值化器

在可迭代的可迭代对象和多标签格式之间转换。

备注

如果 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 来拟合变换器。

如果 validateTrue,则将检查 X

参数:
X如果 validate=True,则形状为 (n_samples, n_features) 的 {类数组、稀疏矩阵},否则为 func 可以处理的任何对象

输入数组。

y忽略

未使用,出于约定,此处用于 API 一致性。

返回:
self对象

FunctionTransformer 类实例。

fit_transform(X, y=None, **fit_params)[source]#

拟合数据,然后转换它。

使用可选参数 fit_params 将变换器拟合到 Xy,并返回 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 是一个可调用对象,则它将使用两个参数 selfinput_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_out类数组,形状 (n_samples, n_features)

转换后的输入。

set_output(*, transform=None)[source]#

设置输出容器。

请参阅 介绍 set_output API,了解如何使用此 API 的示例。

参数:
transform{"default", "pandas", "polars"},默认为 None

配置 transformfit_transform 的输出。

  • "default":转换器的默认输出格式

  • "pandas":DataFrame 输出

  • "polars":Polars 输出

  • None:转换配置保持不变

版本 1.4 中添加: 添加了 "polars" 选项。

返回:
self估计器实例

估计器实例。

set_params(**params)[source]#

设置此估计器的参数。

此方法适用于简单的估计器以及嵌套对象(例如 Pipeline)。后者具有 <component>__<parameter> 形式的参数,以便可以更新嵌套对象的每个组件。

参数:
**params字典

估计器参数。

返回:
self估计器实例

估计器实例。

transform(X)[source]#

使用正向函数转换 X。

参数:
X如果 validate=True,则形状为 (n_samples, n_features) 的 {类数组、稀疏矩阵},否则为 func 可以处理的任何对象

输入数组。

返回:
X_out类数组,形状 (n_samples, n_features)

转换后的输入。