Matplotlib & Seaborn : visualiser pour comprendre
⏱ 60 minLa visualisation est le premier acte de tout projet ML sérieux. Un graphique révèle en secondes ce qu'un tableau de chiffres cache.
Matplotlib — la base de tout
import matplotlib.pyplot as plt
import numpy as np
# Graphique de base
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(epochs, train_loss, label="Train loss", color="#6366f1")
ax.plot(epochs, val_loss, label="Val loss", color="#f59e0b", linestyle="--")
ax.set_xlabel("Époque")
ax.set_ylabel("Loss")
ax.set_title("Courbes d'apprentissage")
ax.legend()
ax.grid(alpha=0.3)
plt.tight_layout()
plt.savefig("learning_curves.png", dpi=150)
plt.show()
Subplots — plusieurs graphiques côte à côte
fig, axes = plt.subplots(1, 3, figsize=(15, 5))
# Distribution d'une variable
axes[0].hist(df["age"], bins=30, color="#6366f1", edgecolor="white")
axes[0].set_title("Distribution de l'âge")
# Boîte à moustaches
axes[1].boxplot([groupe_a, groupe_b, groupe_c], labels=["A", "B", "C"])
axes[1].set_title("Comparaison des groupes")
# Nuage de points
axes[2].scatter(df["revenus"], df["score_credit"], alpha=0.3, c=df["défaut"], cmap="RdYlGn")
axes[2].set_title("Revenus vs Score crédit")
plt.tight_layout()
Seaborn — visualisations statistiques élégantes
import seaborn as sns
# Définir un thème cohérent
sns.set_theme(style="darkgrid", palette="deep")
# Distribution + courbe de densité (KDE)
sns.histplot(data=df, x="salaire", hue="département", kde=True, bins=40)
# Matrice de corrélation — ESSENTIELLE en EDA
corr = df.select_dtypes("number").corr()
plt.figure(figsize=(12, 8))
sns.heatmap(corr, annot=True, fmt=".2f", cmap="coolwarm",
center=0, vmin=-1, vmax=1, square=True)
plt.title("Matrice de corrélation")
plt.show()
# Pairplot — toutes les relations deux-à-deux
sns.pairplot(df[["feature1", "feature2", "feature3", "target"]], hue="target")
# Violin plot — distribution + densité
sns.violinplot(data=df, x="catégorie", y="valeur", hue="groupe")
Ressource : Seaborn Gallery — https://seaborn.pydata.org/examples/index.html
✍️ Exercices de la leçon
2 exercicesFais-les dans l'ordre, dans un vrai fichier .py — pas dans ta tête. Ne déplie la correction qu'après avoir écrit quelque chose, même faux.
Exercice A — Une figure à trois panneaux
Application directe · Tu appliques ce que tu viens de lire.
Sur le dataset Titanic (sns.load_dataset("titanic")), produis une seule figure contenant trois panneaux côte à côte :
- 1.la distribution de l'âge (histogramme + courbe de densité)
- 2.une boîte à moustaches de l'âge par classe
- 3.un nuage de points âge × tarif, les points colorés selon la survie
Chaque panneau doit avoir un titre explicite et des axes nommés. Sauvegarde la figure en PNG à 150 dpi.
Puis ajoute, dans une seconde figure, la matrice de corrélation des variables numériques en heatmap annotée.
Exercice B — Quatre questions, quatre graphiques
Page blanche · Aucun squelette : à toi de choisir la méthode.
Page blanche. Aucun type de graphique n'est indiqué.
Toujours sur le Titanic, un journaliste te pose quatre questions :
- 1.« Les passagers les plus riches avaient-ils plus de chances de survivre ? »
- 2.« Y avait-il des enfants dans toutes les classes ? »
- 3.« Le port d'embarquement change-t-il quelque chose ? »
- 4.« Voyager seul ou en famille, ça jouait ? »
Pour chacune : choisis le graphique adapté, produis-le, et écris en dessous la réponse en une phrase.
Le vrai exercice, c'est le choix. Un mauvais type de graphique peut rendre une réponse invisible — ou en suggérer une fausse. Avant de coder, écris pour chaque question : quel type de variable je compare (numérique ? catégorielle ?), et donc quel graphique.