Modèles linéaires : régression et classification
Entraînez des modèles de régression linéaire et de régression logistique.
Modèles linéaires : régression et classification est une leçon Python Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Python Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Python Academy comprend 4 leçons au total.
Régression linéaire
LinearRegression ajuste une droite (ou un hyperplan) en minimisant l'erreur des moindres carrés.
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
X, y = make_regression(n_samples=200, n_features=5, noise=10, random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)
model = LinearRegression().fit(X_tr, y_tr)
print("RMSE:", mean_squared_error(y_te, model.predict(X_te))**0.5)Coefficients du modèle
Après l'ajustement, examinez coef_ (les poids des caractéristiques) et intercept_.
from sklearn.linear_model import LinearRegression
import numpy as np
X = np.array([[1],[2],[3]])
y = np.array([2, 4, 6])
model = LinearRegression().fit(X, y)
print("Coef:", model.coef_) # [2.]
print("Intercept:", model.intercept_) # ~0Régression Ridge et Lasso
Ridge (L2) et Lasso (L1) ajoutent une régularisation pour éviter le surapprentissage. alpha contrôle l'intensité de la régularisation.
from sklearn.linear_model import Ridge, Lasso
from sklearn.datasets import make_regression
X, y = make_regression(n_features=20, noise=15, random_state=0)
ridge = Ridge(alpha=1.0).fit(X, y)
lasso = Lasso(alpha=0.1).fit(X, y)
print("Ridge coef[:5]:", ridge.coef_[:5])
print("Lasso coef[:5]:", lasso.coef_[:5]) # some are 0 (sparse)Régression logistique
LogisticRegression est un classifieur linéaire pour les problèmes binaires ou multiclasse. Malgré son nom, il prédit des probabilités de classe.
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
X, y = make_classification(random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)
model = LogisticRegression().fit(X_tr, y_tr)
print("Accuracy:", accuracy_score(y_te, model.predict(X_te)))Régression logistique multiclasse
Définissez multi_class="multinomial" ou utilisez OvR (un contre tous) par défaut pour au moins 3 classes.
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
model = LogisticRegression(max_iter=200).fit(X, y)
print("Classes:", model.classes_) # [0 1 2]
print("Accuracy:", model.score(X, y))Mise à l'échelle des caractéristiques pour les modèles linéaires
Mettez toujours les caractéristiques à l'échelle pour les modèles linéaires, en particulier avec une régularisation. Des caractéristiques non mises à l'échelle entraînent des pénalités différentes et trompeuses.
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
pipe = Pipeline([
("scale", StandardScaler()),
("clf", LogisticRegression())
])
pipe.fit(X_tr, y_tr)
print(pipe.score(X_te, y_te))Courbe d'apprentissage
Une courbe d'apprentissage montre comment les performances du modèle s'améliorent avec davantage de données d'entraînement — elle est utile pour diagnostiquer le sous-apprentissage ou le surapprentissage.
from sklearn.model_selection import learning_curve
import numpy as np
train_sizes, train_scores, val_scores = learning_curve(
LogisticRegression(), X, y, cv=5,
train_sizes=np.linspace(0.1, 1.0, 5)
)
print("Val mean:", val_scores.mean(axis=1))Score R² pour la régression
r2_score mesure la proportion de variance expliquée. 1.0 correspond à une prédiction parfaite ; 0 signifie que le modèle ne fait pas mieux que prédire la moyenne.
from sklearn.metrics import r2_score
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
X, y = make_regression(noise=20, random_state=0)
model = LinearRegression().fit(X, y)
print("R²:", r2_score(y, model.predict(X)))Caractéristiques polynomiales
Utilisez PolynomialFeatures pour ajuster des relations non linéaires avec un modèle linéaire.
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LinearRegression
import numpy as np
X = np.array([[1],[2],[3],[4],[5]])
y = np.array([1, 4, 9, 16, 25]) # y = x^2
pipe = Pipeline([
("poly", PolynomialFeatures(degree=2)),
("lr", LinearRegression())
])
pipe.fit(X, y)
print(pipe.predict([[6]])) # ~36SGDClassifier et SGDRegressor
La descente de gradient stochastique s'adapte à de très grands jeux de données pour lesquels les solveurs standard sont trop lents.
from sklearn.linear_model import SGDClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=100_000, random_state=0)
pipe = Pipeline([("sc", StandardScaler()), ("sgd", SGDClassifier())])
pipe.fit(X, y)
print(pipe.score(X, y))Chemins de régularisation
Faites varier alpha sur une grille avec RidgeCV/LassoCV, qui sélectionnent automatiquement la meilleure valeur de alpha par validation croisée.
from sklearn.linear_model import RidgeCV, LassoCV
from sklearn.datasets import make_regression
X, y = make_regression(n_features=20, noise=10, random_state=0)
ridge = RidgeCV(alphas=[0.1, 1, 10]).fit(X, y)
print("Best alpha:", ridge.alpha_)Vérification rapide
Quelle est la différence essentielle entre les régressions Ridge et Lasso ?
Récapitulatif
Utilisez LinearRegression pour la régression et LogisticRegression pour la classification. Ajoutez Ridge/Lasso pour la régularisation. Mettez toujours les caractéristiques à l'échelle. Utilisez PolynomialFeatures pour les problèmes non linéaires. Évaluez le modèle avec r2_score (régression) ou accuracy_score (classification).
Questions Fréquemment Posées
La leçon « Modèles linéaires : régression et classification » est-elle gratuite ?
Oui — le texte complet de « Modèles linéaires : régression et classification » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Python Academy, passe à CoddyKit PRO. Le cours Python Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Modèles linéaires : régression et classification » ?
Entraînez des modèles de régression linéaire et de régression logistique. Tu pratiques Python Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Python Academy ?
Aucune expérience préalable n'est requise. Python Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Modèles linéaires : régression et classification » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Python Academy ?
Oui. Chaque leçon Python Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- L’API scikit-learn : fit, transform, predict
- Modèles linéaires : régression et classification
- Modèles arborescents : arbres de décision et forêts aléatoires
- Évaluation des modèles et validation croisée