Validarea încrucișată

Învățare supravegheată cu scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Motivația validării încrucișate

  • Performanța modelului depinde de modul în care împărțim datele

  • Nu este reprezentativă pentru capacitatea modelului de a generaliza pe date noi

  • Soluție: Validarea încrucișată!

Învățare supravegheată cu scikit-learn

Bazele validării încrucișate

titluri coloană: split 1, fold 1, fold 2, fold 3, fold 4 și fold 5

Învățare supravegheată cu scikit-learn

Bazele validării încrucișate

split 1 rezervat ca set de test

Învățare supravegheată cu scikit-learn

Bazele validării încrucișate

fold-urile 2-5 utilizate ca date de antrenare

Învățare supravegheată cu scikit-learn

Bazele validării încrucișate

calcularea metricii pe aceste fold-uri

Învățare supravegheată cu scikit-learn

Bazele validării încrucișate

Fold 2 ca date de test

Învățare supravegheată cu scikit-learn

Bazele validării încrucișate

fold-urile 1, 3, 4 și 5 ca date de antrenare

Învățare supravegheată cu scikit-learn

Bazele validării încrucișate

calcularea metricii din nou

Învățare supravegheată cu scikit-learn

Bazele validării încrucișate

repetare cu al treilea fold

Învățare supravegheată cu scikit-learn

Bazele validării încrucișate

repetare cu al patrulea fold

Învățare supravegheată cu scikit-learn

Bazele validării încrucișate

repetare cu al cincilea fold

Învățare supravegheată cu scikit-learn

Validarea încrucișată și performanța modelului

  • 5 fold-uri = CV cu 5 fold-uri

  • 10 fold-uri = CV cu 10 fold-uri

  • k fold-uri = CV cu k fold-uri

  • Mai multe fold-uri = Cost computațional mai mare

Învățare supravegheată cu scikit-learn

Validarea încrucișată în 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)
Învățare supravegheată cu scikit-learn

Evaluarea performanței validării încrucișate

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])
Învățare supravegheată cu scikit-learn

Să exersăm!

Învățare supravegheată cu scikit-learn

Preparing Video For Download...