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 '
功率变换方法。可用的方法有:
在 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 intransform
.有关不同缩放器、转换器和规范器的比较,请参阅: 比较不同缩放器对数据的影响与离群值 .
引用
[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 分为训练集和测试集。这将使模型评估产生偏差,因为信息会从测试集泄露到训练集。一般来说,我们建议使用PowerTransformer
内 Pipeline 为了防止大多数数据泄露风险,例如:pipe = make_pipeline(PowerTransformer(), LogisticRegression())
.