TL; DR: Sử dụng StratifiedShuffleSplit vớitest_size=0.25
Scikit-learning cung cấp hai mô-đun cho Phân tách phân tầng:
- StratifiedKFold : Mô-đun này hữu ích như một toán tử xác thực chéo k-lần trực tiếp: vì nó sẽ thiết lập các
n_folds
tập huấn luyện / kiểm tra sao cho các lớp đều cân bằng trong cả hai.
Đây là một số mã (trực tiếp từ tài liệu trên)
>>> 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 : Mô-đun này tạo một tập huấn luyện / kiểm tra duy nhất có các lớp (phân tầng) cân bằng như nhau. Về cơ bản đây là những gì bạn muốn với
n_iter=1
. Bạn có thể đề cập đến kích thước thử nghiệm ở đây giống như trongtrain_test_split
Mã:
>>> 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]
>>>