PowerTransformer#

class sklearn.preprocessing.PowerTransformer(method='yeo-johnson', *, standardize=True, copy=True)#

应用幂变换特征以使数据更接近高斯分布。

幂变换是一组参数化的、单调的变换,应用于使数据更接近高斯分布。这对于解决异方差性(非恒定方差)或其他需要正态性的情况非常有用。

目前,PowerTransformer 支持 Box-Cox 变换和 Yeo-Johnson 变换。通过最大似然估计来估计稳定方差和最小化偏斜的最佳参数。

Box-Cox 要求输入数据为严格正数,而 Yeo-Johnson 支持正数和负数数据。

默认情况下,对变换后的数据应用零均值、单位方差的归一化。

有关示例可视化,请参阅 Compare PowerTransformer with other scalers 。要查看 Box-Cox 和 Yeo-Johnson 变换对不同分布的影响,请参阅: 将数据映射到正态分布

更多信息请参阅 User Guide

Added in version 0.20.

Parameters:
method{‘yeo-johnson’, ‘box-cox’}, default=’yeo-johnson’

幂变换方法。可用方法有:

  • ‘yeo-johnson’ [1], 适用于正数和负数

  • ‘box-cox’ [2], 仅适用于严格正数

standardizebool, default=True

设置为 True 以对变换后的输出应用零均值、单位方差的归一化。

copybool, default=True

设置为 False 以在变换期间执行就地计算。

Attributes:
lambdas_ndarray of float of shape (n_features,)

所选特征的幂变换参数。

n_features_in_int

fit 期间看到的特征数量。

Added in version 0.24.

feature_names_in_ndarray of shape ( n_features_in_ ,)

fit 期间看到的特征名称。仅当 X 的特征名称均为字符串时定义。

Added in version 1.0.

See also

power_transform

等效函数,不带估计器 API。

QuantileTransformer

将数据映射到标准正态分布,参数 output_distribution='normal'

Notes

NaNs 被视为缺失值:在 fit 中忽略,在 transform 中保留。

References

Examples

>>> import numpy as np
>>> from sklearn.preprocessing import PowerTransformer
>>> pt = PowerTransformer()
>>> data = [[1, 2], [3, 2], [4, 5]]
>>> print(pt.fit(data))
PowerTransformer()
>>> print(pt.lambdas_)
[ 1.386... -3.100...]
>>> print(pt.transform(data))
[[-1.316... -0.707...]
 [ 0.209... -0.707...]
 [ 1.106...  1.414...]]
fit(X, y=None)#

估计每个特征的最佳参数lambda。

使用最大似然估计每个特征独立地估计最小化偏度的最佳lambda参数。

Parameters:
X形状为 (n_samples, n_features) 的类数组

用于估计最佳变换参数的数据。

yNone

忽略。

Returns:
selfobject

拟合的变换器。

fit_transform(X, y=None)#

拟合 PowerTransformerX ,然后转换 X

Parameters:
X形状为 (n_samples, n_features) 的类数组

用于估计最优变换参数的数据,并使用幂变换进行转换。

y忽略

不使用,为了保持API一致性而存在。

Returns:
X_new形状为 (n_samples, n_features) 的 ndarray

转换后的数据。

get_feature_names_out(input_features=None)#

获取变换后的输出特征名称。

Parameters:
input_features字符串数组或None,默认=None

输入特征。

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

  • 如果 input_features 是数组类型,则 input_features 必须与 feature_names_in_ 匹配(如果 feature_names_in_ 已定义)。

Returns:
feature_names_out字符串对象的ndarray

与输入特征相同。

get_metadata_routing()#

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

请查看 用户指南 以了解路由机制的工作原理。

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

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

Returns:
paramsdict

参数名称映射到它们的值。

inverse_transform(X)#

应用使用拟合的lambda值进行逆幂变换。

Box-Cox变换的逆变换由以下公式给出:

if lambda_ == 0:
    X = exp(X_trans)
else:
    X = (X_trans * lambda_ + 1) ** (1 / lambda_)

Yeo-Johnson变换的逆变换由以下公式给出:

if X >= 0 and lambda_ == 0:
    X = exp(X_trans) - 1
elif X >= 0 and lambda_ != 0:
    X = (X_trans * lambda_ + 1) ** (1 / lambda_) - 1
elif X < 0 and lambda_ != 2:
    X = 1 - (-(2 - lambda_) * X_trans + 1) ** (1 / (2 - lambda_))
elif X < 0 and lambda_ == 2:
    X = 1 - exp(-X_trans)
Parameters:
X形状为 (n_samples, n_features) 的类数组

变换后的数据。

Returns:
X形状为 (n_samples, n_features) 的 ndarray

原始数据。

set_output(*, transform=None)#

设置输出容器。

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

Parameters:
transform{“default”, “pandas”, “polars”}, 默认=None

配置 transformfit_transform 的输出。

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

  • "pandas" : DataFrame 输出

  • "polars" : Polars 输出

  • None : 转换配置不变

Added in version 1.4: "polars" 选项已添加。

Returns:
self估计器实例

估计器实例。

set_params(**params)#

设置此估计器的参数。

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

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

transform(X)#

应用幂变换到每个特征,使用拟合的lambdas。

Parameters:
X形状为 (n_samples, n_features) 的类数组

使用幂变换的数据。

Returns:
X_trans形状为 (n_samples, n_features) 的 ndarray

变换后的数据。