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 版本。
- 属性:
另请参阅
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 拟合转换器。
如果
validate
为True
,则将检查X
。- 参数:
- X{类似数组,稀疏矩阵} 形状为 (n_samples, n_features) 如果
validate=True
,否则为func
可处理的任何对象 输入数组。
- y被忽略
未使用,在此处是为了 API 约定的一致性。
- X{类似数组,稀疏矩阵} 形状为 (n_samples, n_features) 如果
- 返回:
- 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类似字符串数组或 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
是一个可调用对象,则会使用两个参数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_original类似数组对象,形状为 (n_samples, n_features)
转换后的输入。
- set_output(*, transform=None)[source]#
设置输出容器。
有关如何使用此 API 的示例,请参阅 set_output API 简介。
- 参数:
- transform{“default”, “pandas”, “polars”},默认值为 None
配置
transform
和fit_transform
的输出。"default"
: 转换器的默认输出格式"pandas"
: DataFrame 输出"polars"
: Polars 输出None
: 转换配置未更改
添加于 1.4 版本: 添加了
"polars"
选项。
- 返回:
- self估计器实例
估计器实例。