PowerTransformer#
- class pyts.preprocessing.PowerTransformer(method: Literal['yeo-johnson', 'box-cox'] = 'yeo-johnson', standardize: bool = True)[source]#
Apply a power transform sample-wise to make data more Gaussian-like.
Power transforms are a family of parametric, monotonic transformations that are applied to make data more Gaussian-like. This is useful for modeling issues related to heteroscedasticity (non-constant variance), or other situations where normality is desired.
Currently, PowerTransformer supports the Box-Cox transform and the Yeo-Johnson transform. The optimal parameter for stabilizing variance and minimizing skewness is estimated through maximum likelihood.
Box-Cox requires input data to be strictly positive, while Yeo-Johnson supports both positive or negative data.
By default, zero-mean, unit-variance normalization is applied to the transformed data.
- Parameters:
- method‘yeo-johnson’ or ‘box-cox’ (default = ‘yeo-johnson’)
The power transform method. Available methods are:
- standardizeboolean (default = True)
Set to True to apply zero-mean, unit-variance normalization to the transformed output.
Notes
NaNs are treated as missing values: disregarded in
fit, and maintained intransform.References
[1]I.K. Yeo and R.A. Johnson, “A new family of power transformations to improve normality or symmetry.” Biometrika, 87(4), pp.954-959, (2000).
[2]G.E.P. Box and D.R. Cox, “An Analysis of Transformations”, Journal of the Royal Statistical Society B, 26, 211-252 (1964).
Examples
>>> import numpy as np >>> from pyts.preprocessing import PowerTransformer >>> X = [[1, 3, 4], [2, 2, 5]] >>> pt = PowerTransformer() >>> print(pt.transform(X)) [[-1.316... 0.209... 1.106...] [-0.707... -0.707... 1.414...]]
Methods
__init__([method, standardize])fit([X, y])Pass.
fit_transform(X[, y])Fit to data, then transform it.
get_metadata_routing()Get metadata routing of this object.
get_params([deep])Get parameters for this estimator.
set_params(**params)Set the parameters of this estimator.
transform(X)Transform the data.
- __init__(method: Literal['yeo-johnson', 'box-cox'] = 'yeo-johnson', standardize: bool = True) None[source]#