Exercice 83 / 100

ML — Classification

ConsigneEntraîne un classifieur logistique

📖 Cours

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 : le modèle calcule une combinaison linéaire des features, la transforme en probabilités (sigmoïde à deux classes, softmax au-delà) et retient la classe la plus probable. À deux classes, cela revient à comparer la probabilité au seuil de 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
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 LogisticRegressionfrom 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 classesproba = model.predict_proba(X_test) # shape (n, n_classes)

Métriques de classification

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

Exemple complet (classif binaire)

import numpy as npfrom sklearn.linear_model import LogisticRegressionfrom sklearn.model_selection import train_test_splitfrom 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).

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