← retour aux snippets

sklearn cross_val_predict avec probabilités

générer des prédictions out-of-fold avec predict_proba

python ml #sklearn#cv

sklearn cross_val_predict avec probabilités

objectif

Expliquer et montrer comment générer des prédictions out-of-fold avec predict_proba.

code minimal

import numpy as np
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import StratifiedKFold, cross_val_predict

X, y = make_classification(n_samples=1000, n_features=20, random_state=0)
cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=0)
clf = LogisticRegression(max_iter=1000)
probas = cross_val_predict(clf, X, y, cv=cv, method="predict_proba")[:,1]
probas[:5]

utilisation

# courbe ROC out-of-fold
from sklearn.metrics import roc_auc_score
auc = roc_auc_score(y, probas)
print(round(float(auc), 3))

variante(s) utile(s)

# obtenir des logits via decision_function
scores = cross_val_predict(clf, X, y, cv=cv, method="decision_function")
scores[:5]

notes

  • cross_val_predict évite le surapprentissage pour les diagnostics OOF.
  • Attention aux fuites de prétraitements; encapsulez dans un Pipeline.