TL; DR: ใช้StratifiedShuffleSplitกับtest_size=0.25
Scikit-learn มีสองโมดูลสำหรับ Stratified Splitting:
- StratifiedKFold : โมดูลนี้มีประโยชน์ในฐานะตัวดำเนินการตรวจสอบความถูกต้องข้ามแบบ k-fold โดยตรงเนื่องจากจะตั้งค่าชุด
n_folds
การฝึกอบรม / การทดสอบเพื่อให้ชั้นเรียนมีความสมดุลเท่ากันทั้งสองอย่าง
นี่คือรหัสบางส่วน (โดยตรงจากเอกสารด้านบน)
>>> skf = cross_validation.StratifiedKFold(y, n_folds=2)
>>> len(skf)
2
>>> for train_index, test_index in skf:
... print("TRAIN:", train_index, "TEST:", test_index)
... X_train, X_test = X[train_index], X[test_index]
... y_train, y_test = y[train_index], y[test_index]
...
- StratifiedShuffleSplit : โมดูลนี้สร้างชุดการฝึกอบรม / การทดสอบเดียวที่มีคลาสที่สมดุล (แบ่งชั้น) เท่า ๆ กัน โดยพื้นฐานแล้วนี่คือสิ่งที่คุณต้องการด้วยไฟล์
n_iter=1
. คุณสามารถระบุขนาดทดสอบได้ที่นี่เช่นเดียวกับในtrain_test_split
รหัส:
>>> sss = StratifiedShuffleSplit(y, n_iter=1, test_size=0.5, random_state=0)
>>> len(sss)
1
>>> for train_index, test_index in sss:
... print("TRAIN:", train_index, "TEST:", test_index)
... X_train, X_test = X[train_index], X[test_index]
... y_train, y_test = y[train_index], y[test_index]
>>>