D· AI-utvecklareprogrammering· ca 45 min· grundläggande — ändras sällan· verifierad 2026-09-20
Visualisering med Matplotlib
Kunna rita linje-, spridnings- och histogramdiagram och läsa av träningskurvor.
Förkunskaper
Intuition
Välj diagram efter frågan, inte efter vad som ser snyggt ut:
| Frågan | Diagram |
|---|---|
| Hur ändras något över tid? | linjediagram |
| Hänger två variabler ihop? | spridningsdiagram |
| Hur är värdena fördelade? | histogram |
| Hur skiljer sig grupperna? | lådagram eller stapeldiagram |
| Var är felen? | förväxlingsmatris som värmekarta |
Fyra regler som gör diagram läsbara:
- Märk axlarna, med enhet.
- Nollbasera stapeldiagram — annars överdrivs skillnader. Linjediagram får zoomas.
- Rita alltid ut datan när underlaget är litet, inte bara medelvärden.
- Använd inte färg som enda skillnad — cirka 8 % av män har någon form av färgblindhet. Lägg till olika linjestilar eller markörer.
Kod
import matplotlib
matplotlib.use("Agg") # rita till fil utan skärm — behövs på en server
import matplotlib.pyplot as plt
import numpy as np
rng = np.random.default_rng(0)
epoker = np.arange(1, 41)
train = 1.2 * np.exp(-epoker / 12) + 0.05
val = 1.2 * np.exp(-epoker / 12) + 0.05 + np.maximum(0, (epoker - 18) * 0.006)
fig, ax = plt.subplots(1, 3, figsize=(13, 3.6))
# 1. Träningskurva — den viktigaste bilden i hela ML
ax[0].plot(epoker, train, label="träning", linestyle="-")
ax[0].plot(epoker, val, label="validering", linestyle="--")
ax[0].axvline(int(epoker[np.argmin(val)]), color="gray", linestyle=":",
label="bästa epok")
ax[0].set(xlabel="epok", ylabel="förlust", title="Träningskurva")
ax[0].legend()
# 2. Spridning — hänger x och y ihop?
x = rng.normal(size=200)
y = 0.7 * x + rng.normal(scale=0.6, size=200)
ax[1].scatter(x, y, s=12, alpha=0.6)
ax[1].set(xlabel="feature", ylabel="målvariabel", title=f"r = {np.corrcoef(x, y)[0,1]:.2f}")
# 3. Histogram — hur ser fördelningen ut?
ax[2].hist(rng.gamma(2.0, 2.0, size=1000), bins=30)
ax[2].set(xlabel="värde", ylabel="antal", title="Fördelning (högersvansad)")
fig.tight_layout()
fig.savefig("figur.png", dpi=120)
Att läsa en träningskurva — fyra mönster och vad de betyder:
| Mönster | Diagnos | Åtgärd |
|---|---|---|
| Båda faller och planar ut ihop | sunt | klart |
| Träning faller, validering vänder uppåt | överanpassning | tidigt stopp, mer data, regularisering |
| Båda planar ut högt | underanpassning | större modell, längre träning, bättre features |
| Kurvan hoppar vilt | för hög lärhastighet eller för liten batch | sänk lr, öka batch |
Den andra raden är den vanligaste. Punkten där valideringskurvan vänder är den epok du ska spara modellen från — allt därefter är att lära sig träningsdatan utantill.
Behärskning innebär
- Ritar de vanliga diagramtyperna
- Läser av en träningskurva
- Väljer diagramtyp efter frågan
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- Matplotlib — dokumentation (PSF-liknande) — Matplotlib-licens (BSD-liknande)
- Dive into Deep Learning (CC BY-SA 4.0) — CC BY-SA 4.0
- Statistiska centralbyrån — om diagram — myndighetsmaterial