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 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 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 utilizarPowerTransformer
dentro de un Pipeline para evitar la mayoría de los riesgos de fuga de datos, por ejemplopipe = make_pipeline(PowerTransformer(), LogisticRegression())
.