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:
- 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 entransform
.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
Estima el parámetro óptimo lambda para cada característica.
Ajusta a los datos y luego los transforma.
Obtiene los parámetros para este estimador.
Aplica la transformación de potencia inversa utilizando las lambdas ajustadas.
Establece los parámetros de este estimador.
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
ey
con los parámetros opcionalesfit_params
y devuelve una versión transformada deX
.- 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.