sklearn.preprocessing.power_transform

sklearn.preprocessing.power_transform()

Las transformaciones de potencia son una familia de transformaciones paramétricas y monótonas que se aplican para que los datos sean más Gaussianos. Esto es útil para modelar problemas relacionados con la heteroscedasticidad (varianza no constante), u otras situaciones en las que se desea la normalidad.

Actualmente, power_transform admite la transformación Box-Cox y la transformación Yeo-Johnson. El parámetro óptimo para estabilizar la varianza y minimizar la asimetría se estima mediante la máxima verosimilitud.

Box-Cox requiere que los datos de entrada sean estrictamente positivos, mientras que Yeo-Johnson admite tanto datos positivos como negativos.

Por defecto, se aplica a los datos transformados una normalización de media cero y varianza unitaria.

Lee más en el Manual de usuario.

Parámetros
Xarray-like de forma (n_samples, n_features)

Los datos a transformar mediante una transformación de potencia.

method{“yeo-johnson”, “box-cox”}, default=”yeo-johnson”

El método de transformación de potencia. Los métodos disponibles son:

  • “yeo-johnson” [1], funciona con valores positivos y negativos

  • “box-cox” [2], sólo funciona con valores estrictamente positivos

Distinto en la versión 0.23: El valor predeterminado del parámetro method cambió de “box-cox” a “yeo-johnson” en 0.23.

standardizebool, default=True

Establecélo en True para aplicar una normalización de media cero y varianza unitaria a la salida transformada.

copybool, default=True

Establécelo en False para realizar cálculos in place durante la transformación.

Devuelve
X_transndarray de forma (n_samples, n_features)

Los datos transformados.

Ver también

PowerTransformer

Transformación equivalente con la API Transformer (por ejemplo, como parte de un Pipeline de preprocesamiento).

quantile_transform

Mapea los datos a una distribución normal estándar con el parámetro output_distribution='normal'.

Notas

Los NaNs son tratados como valores faltantes: no se tienen en cuenta en fit y se mantienen en transform.

Para una comparación de los diferentes escaladores, transformadores y normalizadores, consulta examples/preprocessing/plot_all_scaling.py.

Referencias

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).

Ejemplos

>>> 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...]]

Advertencia

Riesgo de fuga de datos. No utilices power_transform a menos que sepas lo que estás haciendo. Un error común es aplicarlo a todos los datos antes de dividirlos en conjuntos de entrenamiento y prueba. Esto sesgará la evaluación del modelo porque la información se habrá filtrado del conjunto de prueba al conjunto de entrenamiento. En general, recomendamos utilizar PowerTransformer dentro de un Pipeline para evitar la mayoría de los riesgos de fuga de datos, por ejemplo pipe = make_pipeline(PowerTransformer(), LogisticRegression()).