Exercice 83 / 100

ML — Classification

Entraîne un classifieur logistique

La régression logistique (malgré son nom) est un algorithme de classification, pas de régression. Elle prédit une catégorie (0/1, oui/non, A/B/C).

Principe : applique une transformation sigmoïde à une combinaison linéaire pour obtenir une probabilité entre 0 et 1, qu'on seuile à 0.5.

La régression logistique ne sort pas une classe directement : elle calcule une somme pondérée des features, la ramène entre 0 et 1 par la sigmoïde, puis compare cette probabilité au seuil de 0.5

Workflow sklearn

from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, classification_report
model = LogisticRegression() model.fit(X_train, y_train) y_pred = model.predict(X_test)
# probabilités au lieu des classes proba = model.predict_proba(X_test) # shape (n, n_classes)

Métriques de classification

accuracy_score(y_true, y_pred) % de bonnes prédictions precision_score, recall_score, f1_score (cf leçon 84)
classification_report
résumé détaillé par classe

Exemple complet (classif binaire)

import numpy as np from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score, classification_report
np.random.seed(42) X = np.random.randn(200, 2) y = (X[:, 0] + X[:, 1] > 0).astype(int) # frontière : x1 + x2 = 0
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = LogisticRegression() model.fit(X_train, y_train) y_pred = model.predict(X_test)
print(f'Accuracy: {accuracy_score(y_test, y_pred):.2%}') print(classification_report(y_test, y_pred))

Multi-classes (≥ 3 classes)

LogisticRegression gère automatiquement le multi-classes (one-vs-rest ou softmax). y_train peut contenir 0, 1, 2, ...

Hyperparamètres utiles

C=1.0 inverse de la régularisation (plus C est petit, plus c'est régularisé) penalty='l2' régularisation L2 (défaut) solver='lbfgs' algorithme d'optimisation (défaut, fonctionne dans 95% des cas) class_weight='balanced' ajuste pour les classes déséquilibrées

La régression logistique est sensible à l'échelle des features. Standardise (StandardScaler) si tes variables ont des unités différentes.

Très bon baseline pour la classification, rapide, interprétable (les coefs indiquent l'influence de chaque feature).

exercise.py

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →