sklearn.preprocessing.PowerTransformer

class sklearn.preprocessing.PowerTransformer

Aplica una transformación de potencia en función de las características para que los datos sean más Gaussianos.

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, PowerTransformer 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.

Nuevo en la versión 0.20.

Parámetros
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

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.

Atributos
lambdas_ndarray de float de forma (n_features,)

Los parámetros de la transformación de potencia para las características seleccionadas.

Ver también

power_transform

Función equivalente sin la API del estimador.

QuantileTransformer

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

Métodos

fit

Estima el parámetro óptimo lambda para cada característica.

fit_transform

Ajusta a los datos y luego los transforma.

get_params

Obtiene los parámetros para este estimador.

inverse_transform

Aplica la transformación de potencia inversa utilizando las lambdas ajustadas.

set_params

Establece los parámetros de este estimador.

transform

Aplica la transformación de potencia a cada característica utilizando las lambdas ajustadas.

fit()

Estima el parámetro óptimo lambda para cada característica.

El parámetro óptimo de lambda para minimizar la asimetría se estima en cada característica de forma independiente utilizando la máxima verosimilitud.

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

Los datos utilizados para estimar los parámetros óptimos de transformación.

yNone

Ignorado.

Devuelve
selfobject

Transformador ajustado.

fit_transform()

Ajusta a los datos y luego los transforma.

Ajusta el transformador a X e y con los parámetros opcionales fit_params y devuelve una versión transformada de X.

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

Muestras de entrada.

yarray-like de forma (n_samples,) o (n_samples, n_outputs), default=None

Valores objetivo (None para transformaciones no supervisadas).

**fit_paramsdict

Parámetros de ajuste adicionales.

Devuelve
X_newarreglo ndarray de forma (n_samples, n_features_new)

Arreglo transformado.

get_params()

Obtiene los parámetros para este estimador.

Parámetros
deepbool, default=True

Si es True, devolverá los parámetros para este estimador y los subobjetos contenidos que son estimadores.

Devuelve
paramsdict

Los nombres de los parámetros mapeados a sus valores.

inverse_transform()

Aplica la transformación de potencia inversa utilizando las lambdas ajustadas.

La inversa de la transformación Box-Cox viene dada por:

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

La inversa de la transformación de Yeo-Johnson viene dada por:

if X >= 0 and lambda_ == 0:
    X = exp(X_trans) - 1
elif X >= 0 and lambda_ != 0:
    X = (X_trans * lambda_ + 1) ** (1 / lambda_) - 1
elif X < 0 and lambda_ != 2:
    X = 1 - (-(2 - lambda_) * X_trans + 1) ** (1 / (2 - lambda_))
elif X < 0 and lambda_ == 2:
    X = 1 - exp(-X_trans)
Parámetros
Xarray-like de forma (n_samples, n_features)

Los datos transformados.

Devuelve
Xndarray de forma (n_samples, n_features)

Los datos originales.

set_params()

Establece los parámetros de este estimador.

El método funciona tanto en estimadores simples como en objetos anidados (como Pipeline). Estos últimos tienen parámetros de la forma <component>__<parameter> para que sea posible actualizar cada componente de un objeto anidado.

Parámetros
**paramsdict

Parámetros del estimador.

Devuelve
selfinstancia del estimador

Instancia del estimador.

transform()

Aplica la transformación de potencia a cada característica utilizando las lambdas ajustadas.

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

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

Devuelve
X_transndarray de forma (n_samples, n_features)

Los datos transformados.

Ejemplos utilizando sklearn.preprocessing.PowerTransformer