← retour aux snippets

sklearn RobustScaler et QuantileTransformer

normaliser robuste aux outliers ou transformer vers distribution cible

sklearn RobustScaler et QuantileTransformer

objectif

Expliquer et montrer comment normaliser robuste aux outliers ou transformer vers distribution cible.

code minimal

import numpy as np
from sklearn.preprocessing import RobustScaler, QuantileTransformer

X = np.random.randn(1000,2) * np.array([1.0, 20.0]) + np.array([0.0, 100.0])
X[::50,1] += 500  # outliers
rob = RobustScaler().fit_transform(X)
qt = QuantileTransformer(output_distribution="normal", random_state=0).fit_transform(X)
rob[:2], qt[:2]

utilisation

# comparer dispersion
import numpy as np
float(np.std(rob[:,1])), float(np.std(qt[:,1]))

variante(s) utile(s)

# PowerTransformer (Yeo-Johnson) alternatif
from sklearn.preprocessing import PowerTransformer
pt = PowerTransformer().fit_transform(X)

notes

  • RobustScaler utilise médiane et IQR, résistant aux outliers.
  • QuantileTransformer force une distribution cible (uniforme/gaussienne).