Bắt đầu ngayBắt đầu miễn phí

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

Xem khóa học

Hướng dẫn bài tập

  • Tạo một đối tượng StratifiedKFold vớ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_indextest_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
Chỉnh sửa và Chạy Mã