sklearn KBinsDiscretizer: discrétiser des features
objectif
Expliquer et montrer comment convertir une feature continue en bacs (binning).
code minimal
import numpy as np
from sklearn.preprocessing import KBinsDiscretizer
X = np.random.randn(10,1)
kbd = KBinsDiscretizer(n_bins=5, encode="onehot-dense", strategy="quantile")
Xb = kbd.fit_transform(X)
Xb[:3]
utilisation
# transformer inversement vers les centres des bacs
centers = 0.5*(kbd.bin_edges_[0][1:] + kbd.bin_edges_[0][:-1])
centers[(Xb[0] == 1).argmax()]
variante(s) utile(s)
# 'uniform' ou 'kmeans' comme stratégies de découpe
KBinsDiscretizer(n_bins=4, strategy="kmeans")
notes
- encode=‘onehot’ est utile pour modèles linéaires capturant non-linéarités.
- Attention aux bornes avec des outliers extrêmes.