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 original X 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 utilizar QuantileTransformer 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([...])

Ejemplos utilizando sklearn.preprocessing.quantile_transform