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).