Korsvalidering

Övervakad inlärning med scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Motivering till korsvalidering

  • Modellens prestanda beror på hur vi delar upp data

  • Inte representativt för modellens förmåga att generalisera till ny data

  • Lösning: Korsvalidering!

Övervakad inlärning med scikit-learn

Grunderna i korsvalidering

tabellrubriker: split 1, fold 1, fold 2, fold 3, fold 4 och fold 5

Övervakad inlärning med scikit-learn

Grunderna i korsvalidering

split 1 reserverad som testmängd

Övervakad inlärning med scikit-learn

Grunderna i korsvalidering

fold 2–5 används som träningsdata

Övervakad inlärning med scikit-learn

Grunderna i korsvalidering

beräkna mått på dessa folds

Övervakad inlärning med scikit-learn

Grunderna i korsvalidering

fold 2 som testdata

Övervakad inlärning med scikit-learn

Grunderna i korsvalidering

fold 1, 3, 4 och 5 som träningsdata

Övervakad inlärning med scikit-learn

Grunderna i korsvalidering

beräkna måttet igen

Övervakad inlärning med scikit-learn

Grunderna i korsvalidering

upprepa med den tredje folden

Övervakad inlärning med scikit-learn

Grunderna i korsvalidering

upprepa med den fjärde folden

Övervakad inlärning med scikit-learn

Grunderna i korsvalidering

upprepa med den femte folden

Övervakad inlärning med scikit-learn

Korsvalidering och modellprestanda

  • 5 folds = 5-fold CV

  • 10 folds = 10-fold CV

  • k folds = k-fold CV

  • Fler folds = Mer beräkningsintensivt

Övervakad inlärning med scikit-learn

Korsvalidering i 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)
Övervakad inlärning med scikit-learn

Utvärdera korsvalideringens prestanda

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])
Övervakad inlärning med scikit-learn

Nu kör vi en övning!

Övervakad inlärning med scikit-learn

Preparing Video For Download...