← retour aux snippets

sklearn: class_weight pour classes déséquilibrées

Gérer l'imbalance via class_weight='balanced' ou poids custom.

objectif

Gérer l’imbalance via class_weight=‘balanced’ ou poids custom.

code minimal

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification

X, y = make_classification(weights=[0.95, 0.05], random_state=0)
clf = LogisticRegression(class_weight="balanced", max_iter=1000).fit(X, y)
print(hasattr(clf, "predict_proba"))

utilisation

from sklearn.utils.class_weight import compute_class_weight
import numpy as np
classes = np.unique(y)
cw = compute_class_weight("balanced", classes=classes, y=y)
print(len(cw) == len(classes))

variante(s) utile(s)

from sklearn.svm import SVC
print(hasattr(SVC(class_weight={1:5}), "fit"))

notes

  • Toujours valider avec PR AUC / recall selon usage.