PowerTransformer#

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

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

幂变换是一族参数化的单调变换,旨在使数据更接近高斯分布。这对于处理异方差性(非恒定方差)相关问题或需要正态性的其他情况很有用。

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

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

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

有关可视化示例,请参阅 将 PowerTransformer 与其他缩放器进行比较。要了解 Box-Cox 和 Yeo-Johnson 变换对不同分布的影响,请参阅: 将数据映射到正态分布

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

0.20 版新增。

参数:
method{‘yeo-johnson’, ‘box-cox’}, 默认=’yeo-johnson’

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

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

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

standardize布尔值, 默认=True

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

copy布尔值, 默认=True

设置为 False 则在变换期间执行原地计算。

属性:
lambdas_shape 为 (n_features,) 的浮点数 ndarray

所选特征的幂变换参数。

n_features_in_整型

fit 期间看到的特征数量。

0.24 版新增。

feature_names_in_shape 为 (n_features_in_,) 的 ndarray

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

1.0 版新增。

参见

power_transform

没有估计器 API 的等效函数。

QuantileTransformer

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

注释

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

参考文献

示例

>>> 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 参数。

参数:
Xshape 为 (n_samples, n_features) 的类数组

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

yNone

被忽略。

返回:
self对象

已拟合的变换器。

fit_transform(X, y=None)[源]#

PowerTransformer 拟合到 X,然后变换 X

参数:
Xshape 为 (n_samples, n_features) 的类数组

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

y被忽略

未使用,根据约定用于保持 API 一致性。

返回:
X_newshape 为 (n_samples, n_features) 的 ndarray

变换后的数据。

get_feature_names_out(input_features=None)[源]#

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

参数:
input_featuresstr 的类数组或 None, 默认=None

输入特征。

  • 如果 input_featuresNone,则使用 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

与输入特征相同。

get_metadata_routing()[源]#

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

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

返回:
routingMetadataRequest

封装路由信息的 MetadataRequest

get_params(deep=True)[源]#

获取此估计器的参数。

参数:
deep布尔值, 默认=True

如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:
params字典

参数名称映射到其值。

inverse_transform(X)[源]#

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

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

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

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

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

已变换的数据。

返回:
X_originalshape 为 (n_samples, n_features) 的 ndarray

原始数据。

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

设置输出容器。

有关如何使用 API 的示例,请参阅 Introducing the set_output API

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

配置 transformfit_transform 的输出。

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

  • "pandas": DataFrame 输出

  • "polars": Polars 输出

  • None: 变换配置不变

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

返回:
self估计器实例

估计器实例。

set_params(**params)[源]#

设置此估计器的参数。

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

参数:
**params字典

估计器参数。

返回:
self估计器实例

估计器实例。

transform(X)[源]#

使用已拟合的 lambda 值对每个特征应用幂变换。

参数:
Xshape 为 (n_samples, n_features) 的类数组

将使用幂变换进行变换的数据。

返回:
X_transshape 为 (n_samples, n_features) 的 ndarray

已变换的数据。