sklearn.preprocessing
.quantile_transform¶
- sklearn.preprocessing.quantile_transform()¶
Transforma las características utilizando la información de los cuantiles.
Este método transforma las características para que sigan una distribución uniforme o normal. Por lo tanto, para una característica determinada, esta transformación tiende a repartir los valores más frecuentes. También reduce el impacto de los valores atípicos (marginales): se trata, por tanto, de un esquema de preprocesamiento robusto.
La transformación se aplica a cada característica de forma independiente. Primero, se utiliza una estimación de la función de distribución acumulada de una característica para mapear los valores originales a una distribución uniforme. Luego, los valores obtenidos se mapean a la distribución de salida deseada utilizando la función quantilq asociada. Los valores de las características de los datos nuevos/no vistos que caen por debajo o por encima del rango ajustado serán mapeados a los límites de la distribución de salida. Ten en cuenta que esta transformación no es lineal. Puede distorsionar las correlaciones lineales entre las variables medidas en la misma escala, pero hace que las variables medidas en diferentes escalas sean más directamente comparables.
Más información en el Manual de usuario.
- Parámetros
- X{array-like, sparse matrix} de forma (n_samples, n_features)
Los datos a transformar.
- axisint, default=0
Eje utilizado para calcular las medias y las desviaciones estándar. Si es 0, transforma cada característica, de lo contrario (si es 1) transforma cada muestra.
- n_quantilesint, default=1000 o n_samples
Número de cuantiles a calcular. Corresponde al número de puntos de referencia utilizados para discretizar la función de distribución acumulada. Si n_quantiles es mayor que el número de muestras, n_quantiles se establece en el número de muestras, ya que un número mayor de cuantiles no proporciona una mejor aproximación del estimador de la función de distribución acumulada.
- output_distribution{“uniform”, “normal”}, default=”uniform”
Distribución marginal para los datos transformados. Las opciones son “uniform” (predeterminado) o “normal”.
- ignore_implicit_zerosbool, default=False
Sólo se aplica a las matrices dispersas. Si es True, las entradas dispersas de la matriz se descartan para calcular las estadísticas de cuantiles. Si es False, estas entradas se tratan como ceros.
- subsampleint, default=1e5
Número máximo de muestras utilizadas para estimar los cuantiles por eficiencia computacional. Ten en cuenta que el procedimiento de submuestreo puede diferir para matrices dispersas y densas de valores idénticos.
- random_stateentero, instancia de RandomState o None, default=None
Determina la generación de números aleatorios para el submuestreo y el suavizado del ruido. Por favor, consulta
subsample
para más detalles. Pasa un número entero (int) para que los resultados sean reproducibles en varias llamadas a la función. Ver Glosario- copybool, default=True
Establecer a False para realizar la transformación in place y evitar una copia (si la entrada ya es un arreglo de numpy). Si es True, se transforma una copia de
X
, dejando el originalX
sin cambios- ..versionchanged:: 0.23
El valor predeterminado de
copy
cambió de False a True en 0.23.
- Devuelve
- Xt{ndarray, sparse matrix} de forma (n_samples, n_features)
Los datos transformados.
Ver también
QuantileTransformer
Realiza un escalamiento basado en cuantiles utilizando la API Transformer (por ejemplo, como parte de un
Pipeline
de preprocesamiento).power_transform
Mapea los datos a una distribución normal utilizando una transformación de potencia.
scale
Realiza una estandarización más rápida, pero menos robusta a los valores atípicos.
robust_scale
Realiza una estandarización robusta que elimina la influencia de los valores atípicos, pero que no coloca los valores atípicos y los valores típicos en la misma escala.
Notas
Los NaN se tratan como valores faltantes: no se tienen en cuenta en el ajuste y se mantienen en la transformación.
Advertencia
Riesgo de fuga de datos
No utilices
quantile_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 de 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, se recomienda utilizarQuantileTransformer
dentro de un Pipeline para evitar la mayoría de los riesgos de fuga de datos:pipe = make_pipeline(QuantileTransformer(), LogisticRegression())
.Para una comparación de los diferentes escaladores, transformadores y normalizadores, consulta examples/preprocessing/plot_all_scaling.py.
Ejemplos
>>> import numpy as np >>> from sklearn.preprocessing import quantile_transform >>> rng = np.random.RandomState(0) >>> X = np.sort(rng.normal(loc=0.5, scale=0.25, size=(25, 1)), axis=0) >>> quantile_transform(X, n_quantiles=10, random_state=0, copy=True) array([...])