power_transform#

sklearn.preprocessing.power_transform(X, method='yeo-johnson', *, standardize=True, copy=True)[源代码]#

参数单调变换使数据更加类似高斯。

幂变换是一系列参数单调变换,用于使数据更像高斯。这对于与异方差(非常数方差)或其他需要正态性的情况相关的建模问题非常有用。

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

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

默认情况下,零均值、单位方差正规化应用于转换后的数据。

阅读更多的 User Guide .

参数:
X形状类似阵列(n_samples,n_features)

要使用功率转换进行转换的数据。

method' yeo-johnson ',' box-cox '},默认=' yeo-johnson '

功率变换方法。可用的方法有:

  • “杨约翰逊” [1], 具有积极和消极价值观

  • “box-cox” [2], 仅适用于严格的正值

在 0.23 版本发生变更: 的默认值 method 参数于0.23从“box-cox”更改为“yeo-johnson”。

standardize布尔,默认=True

设置为True以将零均值、单位方差正规化应用于转换后的输出。

copy布尔,默认=True

如果为假,请尝试避免复制并就地转换。并不能保证这始终有效;例如,如果数据是具有int dype的numpy数组,即使具有Copy=False,也会返回副本。

返回:
X_trans形状的nd数组(n_samples,n_features)

转换后的数据。

参见

PowerTransformer

与Transformer API进行等效转换(例如作为预处理的一部分 Pipeline ).

quantile_transform

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

注意到

NaNs are treated as missing values: disregarded in fit, and maintained in transform.

有关不同缩放器、转换器和规范器的比较,请参阅: 比较不同缩放器对数据的影响与离群值 .

引用

[1]

I.K.杨和RA约翰逊:“一个新的权力转换家族,以改善正常性或对称性。“Biometrika,87(4),pp.954-959,(2000)。

[2]

GE Box和DR Cox,“变换分析”,《皇家统计学会杂志》B,26,211-252(1964)。

示例

>>> import numpy as np
>>> from sklearn.preprocessing import power_transform
>>> data = [[1, 2], [3, 2], [4, 5]]
>>> print(power_transform(data, method='box-cox'))
[[-1.332... -0.707...]
 [ 0.256... -0.707...]
 [ 1.076...  1.414...]]

警告

数据泄露风险。不要使用 power_transform 除非你知道你在做什么。一个常见的错误是将其应用于整个数据 before 分为训练集和测试集。这将使模型评估产生偏差,因为信息会从测试集泄露到训练集。一般来说,我们建议使用 PowerTransformerPipeline 为了防止大多数数据泄露风险,例如: pipe = make_pipeline(PowerTransformer(), LogisticRegression()) .