Hoppa till innehållet
AI-grafen
D· AI-utvecklareklassisk-ml· ca 45 min· grundläggande — ändras sällan· verifierad 2026-09-20

Träning, validering och test

Kunna dela upp data korrekt, förklara varför testdata bara används en gång, och undvika läckage.

Förkunskaper

Intuition

Tre högar:

  • Träning — modellen lär sig här.
  • Validering — du väljer modell och hyperparametrar här (jämför varianter, stoppar tidigt).
  • Test — används en gång, sist, för att rapportera. Aldrig för val.

Varför? Varje gång du tittar på en siffra och ändrar något har du «tränat» lite på den datan — genom dina val. Tittar du på testet tio gånger är testsiffran inte längre ärlig.

Läckage = information från test/framtid smyger in i träningen: samma person i båda högarna, normalisering beräknad på all data, features som är kända först efteråt.

Kod

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

X_tmp, X_te, y_tmp, y_te = train_test_split(X, y, test_size=0.15, random_state=0, stratify=y)
X_tr, X_va, y_tr, y_va = train_test_split(X_tmp, y_tmp, test_size=0.18, random_state=0, stratify=y_tmp)

sc = StandardScaler().fit(X_tr)          # bara på träning!
X_tr, X_va, X_te = sc.transform(X_tr), sc.transform(X_va), sc.transform(X_te)

# välj modell/hyperparametrar med X_va … och ALLRA SIST:
print("test:", modell.score(X_te, y_te))

stratify bevarar klassfördelningen. Vid tidsserier: dela i tid (träna på förr, testa på senare), aldrig slumpmässigt. Vid flera rader per person: dela per person (GroupShuffleSplit).

Behärskning innebär

  • Delar data i tränings-, validerings- och testmängd
  • Förklarar varför testdata bara används en gång
  • Identifierar dataläckage

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser