Materi
Satu pembagian latih-uji memberi satu angka yang ikut untung-untungan: pembagian lain bisa memberi skor berbeda. Validasi silang k-lipatan (k-fold) membagi data menjadi k bagian yang sama besar. Model dilatih k kali; setiap kali satu bagian menjadi data validasi dan sisanya data latih. Hasilnya k skor, dan rata-ratanya jauh lebih stabil daripada satu skor.
cross_val_score(model, X, y, cv=5) mengerjakan semuanya dan mengembalikan array lima skor; untuk classifier skornya akurasi. Menurut dokumentasi cross_val_score, cv berupa bilangan bulat pada classifier memakai StratifiedKFold, sehingga proporsi kelas terjaga di setiap lipatan. Untuk mengacak baris sebelum dibagi, berikan KFold(n_splits=5, shuffle=True, random_state=0) sebagai cv.
from sklearn.model_selection import cross_val_score, KFold
from sklearn.tree import DecisionTreeClassifier
lipatan = KFold(n_splits=4, shuffle=True, random_state=1)
skor = cross_val_score(DecisionTreeClassifier(random_state=0), X, y, cv=lipatan)
print(skor.round(3), skor.mean().round(3))User Guide menganjurkan tetap menyisihkan data uji untuk penilaian terakhir: validasi silang dipakai untuk memilih model dan pengaturannya di data latih, lalu data uji dibuka sekali di akhir.