Université Mohammed Première TP 7 Filière: ILCS & DAWN
Ecole Supérieure de Technologie Intelligence Années: 2025/2026
Artificielle
de Nador O. Mahmoudi
Régression Linéaire & Régression Logistique
Objectifs du TP
À la fin de ce TP, l’étudiant doit être capable de :
• Comprendre la différence entre régression et classification
• Appliquer :
o Régression linéaire simple
o Régression linéaire multiple
o Régression logistique
• Diviser les données (Holdout + K-Fold)
• Évaluer les modèles avec les métriques vues en cours :
o MSE
o RMSE
o MAE
o R²
o Explained Variance
• Interpréter les résultats
Dataset Proposé
Nous utiliserons 2 datasets :
Dataset 1 : House Prices (Régression)
Source : Kaggle
Nom : House Prices - Advanced Regression Techniques
Variables utilisées :
Variable Description
GrLivArea Surface habitable
BedroomAbvGr Nombre de chambres
FullBath Nombre de salles de bain
TotalBsmtSF Surface du sous-sol
SalePrice Prix de vente (Variable cible)
Variable cible : SalePrice
Dataset 2 : Iris (Classification)
Source : UCI Machine Learning Repository
Nom : Iris Dataset
Variables :
Variable Description
SepalLength
SepalWidth
PetalLength
PetalWidth
Species (Setosa, Versicolor, Virginica)
Variable cible : Species
PARTIE 1 : Régression Linéaire Simple
Objectif
Prédire SalePrice à partir de GrLivArea
Étape 1 : Importation
import pandas as pd
import numpy as np
import [Link] as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn import metrics
Étape 2 : Chargement des données
df = pd.read_csv("house_prices.csv")
Étape 3 : Sélection des variables
X = df[['GrLivArea']]
Y = df['SalePrice']
Étape 4 : Division des données (Méthode Holdout 80/20)
X_train, X_test, Y_train, Y_test = train_test_split(
X, Y, test_size=0.2, random_state=42)
Étape 5 : Entraînement du modèle
model = LinearRegression()
[Link](X_train, Y_train)
Equation trouvée :
Y=a+bXY
Étape 6 : Prédictions
Y_pred = [Link](X_test)
Étape 7 : Évaluation
print("MSE:", metrics.mean_squared_error(Y_test, Y_pred))
print("RMSE:", metrics.mean_squared_error(Y_test, Y_pred, squared=False))
print("MAE:", metrics.mean_absolute_error(Y_test, Y_pred))
print("R2:", metrics.r2_score(Y_test, Y_pred))
Questions
1. Quelle est l’équation de la droite trouvée ?
2. Que signifie le coefficient b ?
3. Si R² = 0.85, que signifie-t-il ?
4. Que se passe-t-il si R² est négatif ?
5. Pourquoi RMSE est plus interprétable que MSE ?
PARTIE 2 : Régression Linéaire Multiple
Objectif
Prédire SalePrice avec plusieurs variables
Variables utilisées
X = df[['GrLivArea','BedroomAbvGr','FullBath','TotalBsmtSF']]
Y = df['SalePrice']
Entraînement
model = LinearRegression()
[Link](X_train, Y_train)
Modèle :
Y=a+b1X1+b2X2+b3X3+b4X4Y
Évaluation
Même métriques que précédemment.
Questions
1. Comparez R² simple vs multiple.
2. Pourquoi R² augmente souvent en multiple ?
3. Qu’est-ce que la multicolinéarité ?
4. Quelle variable influence le plus le prix ?
5. Comment interpréter un coefficient négatif ?
PARTIE 3 : Validation Croisée (K-Fold)
from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, Y, cv=5)
print("Score moyen:", [Link]())
Questions
1. Pourquoi K-fold réduit l’overfitting ?
2. Quelle différence entre Holdout et K-Fold ?
3. Que se passe-t-il si k = nombre d’observations ?
PARTIE 4 : Classification – Régression Logistique
Dataset : Iris
Étape 1 : Importation
from [Link] import load_iris
from sklearn.linear_model import LogisticRegression
Étape 2 : Chargement
iris = load_iris()
X = [Link]
Y = [Link]
Étape 3 : Division
X_train, X_test, Y_train, Y_test = train_test_split(
X, Y, test_size=0.2, random_state=42)
Étape 4 : Modèle Multinomial
model = LogisticRegression(multi_class='multinomial', max_iter=200)
[Link](X_train, Y_train)
Étape 5 : Prédiction
Y_pred = [Link](X_test)
Étape 6 : Évaluation
from [Link] import accuracy_score, confusion_matrix
print("Accuracy:", accuracy_score(Y_test, Y_pred))
print(confusion_matrix(Y_test, Y_pred))
Questions
1. Quelle différence entre régression linéaire et logistique ?
2. Pourquoi utilise-t-on la fonction sigmoïde ?
3. Que signifie un seuil de 0.5 ?
4. Différence entre OvR et OvO ?
5. Pourquoi la régression logistique ne prédit pas des valeurs continues ?
Partie Analyse & Interprétation
1. Comparez performances régression simple vs multiple.
2. Quel modèle généralise le mieux ?
3. Y a-t-il overfitting ?
4. Quelle métrique est la plus adaptée selon vous ?
5. Proposer une amélioration du modèle.