Cross-validatie

Supervised Learning met scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Motivatie voor cross-validatie

  • Modelprestatie hangt af van hoe we de data splitsen

  • Niet representatief voor generalisatie naar onzichtbare data

  • Oplossing: cross-validatie!

Supervised Learning met scikit-learn

Basis van cross-validatie

tabelkoppen: split 1, vouw 1, vouw 2, vouw 3, vouw 4 en vouw 5

Supervised Learning met scikit-learn

Basis van cross-validatie

split 1 gereserveerd als testset

Supervised Learning met scikit-learn

Basis van cross-validatie

vouwen 2–5 gebruikt als trainingsdata

Supervised Learning met scikit-learn

Basis van cross-validatie

bereken metric op deze vouwen

Supervised Learning met scikit-learn

Basis van cross-validatie

Vouw 2 als testdata

Supervised Learning met scikit-learn

Basis van cross-validatie

vouwen 1, 3, 4 en 5 als trainingsdata

Supervised Learning met scikit-learn

Basis van cross-validatie

bereken metric opnieuw

Supervised Learning met scikit-learn

Basis van cross-validatie

herhaal met de derde vouw

Supervised Learning met scikit-learn

Basis van cross-validatie

herhaal met de vierde vouw

Supervised Learning met scikit-learn

Basis van cross-validatie

herhaal met de vijfde vouw

Supervised Learning met scikit-learn

Cross-validatie en modelprestatie

  • 5 vouwen = 5-voudige CV

  • 10 vouwen = 10-voudige CV

  • k vouwen = k-voudige CV

  • Meer vouwen = meer rekenkosten

Supervised Learning met scikit-learn

Cross-validatie in scikit-learn

from sklearn.model_selection import cross_val_score, KFold

kf = KFold(n_splits=6, shuffle=True, random_state=42)
reg = LinearRegression()
cv_results = cross_val_score(reg, X, y, cv=kf)
Supervised Learning met scikit-learn

Prestaties van cross-validatie evalueren

print(cv_results)
[0.70262578, 0.7659624, 0.75188205, 0.76914482, 0.72551151, 0.73608277]
print(np.mean(cv_results), np.std(cv_results))
0.7418682216666667 0.023330243960652888
print(np.quantile(cv_results, [0.025, 0.975]))
array([0.7054865, 0.76874702])
Supervised Learning met scikit-learn

Laten we oefenen!

Supervised Learning met scikit-learn

Preparing Video For Download...