Stratified K-fold
Như bạn vừa thấy, do chia ngẫu nhiên nên phân phối biến mục tiêu giữa các fold khá khác nhau. Điều này không quá quan trọng với bài thi này, nhưng có thể gây vấn đề trong các bài toán phân loại khi biến mục tiêu bị mất cân bằng mạnh.
Để khắc phục, hãy triển khai chiến lược stratified K-fold với việc phân tầng theo biến mục tiêu. DataFrame train đã có sẵn trong không gian làm việc của bạn.
Bài tập này là một phần của khóa học
Chinh phục cuộc thi Kaggle bằng Python
Hướng dẫn bài tập
- Tạo một đối tượng
StratifiedKFoldvới 3 fold và bật xáo trộn (shuffling). - Lặp qua từng lượt chia bằng đối tượng
str_kf. Việc phân tầng dựa trên cột "interest_level". - Với mỗi lượt chia, chọn các fold huấn luyện và kiểm tra bằng
train_indexvàtest_index.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Import StratifiedKFold
from sklearn.model_selection import StratifiedKFold
# Create a StratifiedKFold object
str_kf = ____(n_splits=____, shuffle=____, random_state=123)
# Loop through each split
fold = 0
for train_index, test_index in ____.____(train, train['interest_level']):
# Obtain training and testing folds
cv_train, cv_test = ____.iloc[____], ____.iloc[____]
print('Fold: {}'.format(fold))
print('CV train shape: {}'.format(cv_train.shape))
print('Medium interest listings in CV train: {}\n'.format(sum(cv_train.interest_level == 'medium')))
fold += 1