Stratified K-fold
Az önce fark ettiğin gibi, rastgele bölmeler nedeniyle katmanlar arasında hedef değişkenin dağılımı oldukça farklı. Bu, bu spesifik yarışma için kritik olmayabilir ama hedef değişkenin çok dengesiz olduğu sınıflandırma yarışmalarında sorun yaratabilir.
Bunu aşmak için, hedef değişkende katmanlaştırma (stratification) yaparak stratified K-fold stratejisini uygulayalım. train DataFrame'i çalışma alanında hazır.
Bu egzersiz, kursun bir parçasıdır
Python ile Bir Kaggle Yarışmasını Kazanmak
Egzersiz talimatları
- 3 katman (fold) ve karıştırma (shuffling) ile bir
StratifiedKFoldnesnesi oluştur. str_kfnesnesini kullanarak her bölme üzerinde döngü kur. Katmanlaştırma "interest_level" sütununa göre yapılacak.- Her bölme için
train_indexvetest_indexkullanarak eğitim ve test katmanlarını (fold'larını) seç.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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