FunctionTransformer#

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)[源代码]#

从任意可调用对象构造转换器。

FunctionTransformer 将其 X(以及可选的 y)参数转发给用户定义函数或函数对象,并返回该函数的结果。这对于无状态转换非常有用,例如计算频率的对数、进行自定义缩放等。

注意:如果 lambda 函数被用作函数,则生成的转换器将无法被 pickling。

版本0.17中新增。

用户指南 中阅读更多内容。

参数:
funccallable, default=None

用于转换的可调用对象。它将接收与 `transform` 相同的参数,并转发 `args` 和 `kwargs`。如果 `func` 为 `None`,则 `func` 将为恒等函数。

inverse_funccallable, default=None

用于反向转换的可调用对象。它将接收与 `inverse_transform` 相同的参数,并转发 `args` 和 `kwargs`。如果 `inverse_func` 为 `None`,则 `inverse_func` 将为恒等函数。

validatebool, default=False

指示在调用 func 之前应检查输入 X 数组。可能性如下:

  • 如果为 False,则不进行输入验证。

  • 如果为 True,则 X 将被转换为二维 NumPy 数组或稀疏矩阵。如果转换失败,则会引发异常。

版本 0.22 中已更改: validate 的默认值从 True 更改为 False。

accept_sparsebool, default=False

指示 func 接受稀疏矩阵作为输入。如果 validate 为 False,则此参数无效。否则,如果 accept_sparse 为 False,稀疏矩阵输入将导致异常。

check_inversebool, default=True

是否检查 `func` 后跟 `inverse_func` 是否能得到原始输入。这可用于健全性检查,并在条件未满足时发出警告。

0.20 版本新增。

feature_names_outcallable, ‘one-to-one’ 或 None, default=None

确定 `get_feature_names_out` 方法将返回的特征名称列表。如果为 'one-to-one',则输出特征名称将等于输入特征名称。如果它是一个可调用对象,那么它必须接受两个位置参数:此 FunctionTransformerself)和输入特征名称的数组(input_features)。它必须返回输出特征名称的数组。只有当 feature_names_out 不为 None 时,get_feature_names_out 方法才会被定义。

有关更多详细信息,请参阅 get_feature_names_out

版本 1.1 中新增。

kw_argsdict, default=None

要传递给 func 的其他关键字参数的字典。

版本 0.18 新增。

inv_kw_argsdict, default=None

要传递给 inverse_func 的其他关键字参数的字典。

版本 0.18 新增。

属性:
n_features_in_int

拟合 期间看到的特征数。

0.24 版本新增。

feature_names_in_shape 为 (n_features_in_,) 的 ndarray

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

1.0 版本新增。

另请参阅

MaxAbsScaler

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

StandardScaler

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

LabelBinarizer

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

MultiLabelBinarizer

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

注意事项

如果 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)[源代码]#

通过检查 X 来拟合转换器。

如果 validateTrue,则会检查 X

参数:
X{array-like, sparse-matrix} of shape (n_samples, n_features) if validate=True else any object that func can handle

输入数组。

y被忽略

Not used, present here for API consistency by convention.

返回:
selfobject

FunctionTransformer 类实例。

fit_transform(X, y=None, **fit_params)[源代码]#

拟合数据,然后对其进行转换。

使用可选参数 fit_params 将转换器拟合到 Xy,并返回 X 的转换版本。

参数:
Xshape 为 (n_samples, n_features) 的 array-like

输入样本。

y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组对象,默认=None

目标值(对于无监督转换,为 None)。

**fit_paramsdict

额外的拟合参数。仅当估计器在其 fit 方法中接受额外的参数时才传递。

返回:
X_newndarray array of shape (n_samples, n_features_new)

转换后的数组。

get_feature_names_out(input_features=None)[源代码]#

获取转换的输出特征名称。

只有当 feature_names_out 不为 None 时,此方法才会被定义。

参数:
input_featuresarray-like of str or None, default=None

输入特征名称。

  • 如果 input_features 为 None,则使用 feature_names_in_ 作为输入特征名称。如果 feature_names_in_ 未定义,则生成名称:[x0, x1, ..., x(n_features_in_ - 1)]

  • 如果 input_features 是 array-like,则 input_features 必须与 feature_names_in_ 匹配,如果 feature_names_in_ 已定义。

返回:
feature_names_outstr 对象的 ndarray

转换后的特征名称。

  • 如果 feature_names_out 为 'one-to-one',则返回输入特征名称(参见上面的 input_features)。这需要定义 feature_names_in_ 和/或 n_features_in_,这在 validate=True 时会自动完成。或者,您可以在 func 中设置它们。

  • 如果 feature_names_out 是一个可调用对象,那么它将与两个参数(selfinput_features)一起调用,其返回值将由此方法返回。

get_metadata_routing()[源代码]#

获取此对象的元数据路由。

请查阅 用户指南,了解路由机制如何工作。

返回:
routingMetadataRequest

封装路由信息的 MetadataRequest

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数:
deepbool, default=True

如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。

返回:
paramsdict

参数名称映射到其值。

inverse_transform(X)[源代码]#

使用反向函数转换 X。

参数:
X{array-like, sparse-matrix} of shape (n_samples, n_features) if validate=True else any object that inverse_func can handle

输入数组。

返回:
X_originalarray-like, shape (n_samples, n_features)

转换后的输入。

set_output(*, transform=None)[源代码]#

设置输出容器。

有关如何使用 API 的示例,请参阅引入 set_output API

参数:
transform{“default”, “pandas”, “polars”}, default=None

配置 transformfit_transform 的输出。

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

  • "pandas": DataFrame 输出

  • "polars": Polars 输出

  • None: 转换配置保持不变

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

返回:
selfestimator instance

估计器实例。

set_params(**params)[源代码]#

设置此估计器的参数。

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

参数:
**paramsdict

估计器参数。

返回:
selfestimator instance

估计器实例。

transform(X)[源代码]#

使用前向函数转换 X。

参数:
X{array-like, sparse-matrix} of shape (n_samples, n_features) if validate=True else any object that func can handle

输入数组。

返回:
X_outarray-like, shape (n_samples, n_features)

转换后的输入。