Séance 6 : Projet de Synthèse et Application sur un Dataset Réel

Durée : 50 minutes

Objectifs de la séance

Plan de la séance

1. Partie Théorique (10–15 minutes)

Présentation du projet

L'objectif est de travailler sur un dataset réel (par exemple, le dataset Iris) pour en extraire, à partir d'un prétraitement, un modèle de classification. Vous devrez préparer les données, choisir un modèle et évaluer ses performances.

2. Partie Pratique (35–40 minutes)

Exercice : Projet de classification sur le dataset Iris

Objectif : Mettre en place une chaîne complète de traitement incluant chargement, prétraitement, modélisation (avec LogisticRegression) et évaluation du modèle.

Consignes :
  1. Charger le dataset iris.csv et convertir la variable catégorielle en codes numériques.
  2. Diviser les données en ensembles d'entraînement et de test.
  3. Normaliser les variables à l'aide de StandardScaler.
  4. Entraîner un modèle de régression logistique et évaluer sa performance (accuracy, matrice de confusion).
  5. Visualiser la matrice de confusion.
Exemple de code Python :

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix
import matplotlib.pyplot as plt
import seaborn as sns

# Chargement du dataset Iris
df = pd.read_csv('iris.csv')
df['species_code'] = df['species'].astype('category').cat.codes

# Sélection des caractéristiques et de la cible
X = df[['sepal_length', 'sepal_width', 'petal_length', 'petal_width']]
y = df['species_code']

# Division en ensembles d'entraînement et de test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Normalisation des données
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# Modélisation avec régression logistique
model = LogisticRegression()
model.fit(X_train_scaled, y_train)
y_pred = model.predict(X_test_scaled)

# Évaluation du modèle
accuracy = accuracy_score(y_test, y_pred)
cm = confusion_matrix(y_test, y_pred)
print("Accuracy :", accuracy)
print("Matrice de confusion :\n", cm)

# Visualisation de la matrice de confusion
plt.figure(figsize=(6,4))
sns.heatmap(cm, annot=True, fmt="d", cmap='Blues', 
            xticklabels=['setosa','versicolor','virginica'], 
            yticklabels=['setosa','versicolor','virginica'])
plt.xlabel('Prédiction')
plt.ylabel('Réalité')
plt.title("Matrice de Confusion")
plt.show()
          

Propositions de Corrections et Commentaires

Afficher/Cacher les corrections

Ouvertures et Possibilités d’Application