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)[source]#

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

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

注意:如果使用 lambda 作为函数,则生成的转换器将不可 pickle 化。

添加于 0.17 版本。

更多信息请参阅用户指南

参数:
func可调用对象,默认值为 None

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

inverse_func可调用对象,默认值为 None

用于逆转换的可调用对象。它将接收与 inverse transform 相同的参数,并转发 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_整数

fit 期间观察到的特征数量。

添加于 0.24 版本。

feature_names_in_形状为 (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)[source]#

通过检查 X 拟合转换器。

如果 validateTrue,则将检查 X

参数:
X{类似数组,稀疏矩阵} 形状为 (n_samples, n_features) 如果 validate=True,否则为 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类似字符串数组或 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_out字符串对象的 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()[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_original类似数组对象,形状为 (n_samples, n_features)

转换后的输入。

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

设置输出容器。

有关如何使用此 API 的示例,请参阅 set_output 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{类似数组,稀疏矩阵} 形状为 (n_samples, n_features) 如果 validate=True,否则为 func 可处理的任何对象

输入数组。

返回:
X_out类似数组对象,形状为 (n_samples, n_features)

转换后的输入。