ComeçarComece de graça

K-fold estratificado

Como você acabou de notar, a distribuição da variável alvo ficou bem diferente entre os folds devido às divisões aleatórias. Isso não é crucial para esta competição específica, mas pode ser um problema em competições de classificação com variável alvo muito desbalanceada.

Para contornar isso, vamos implementar a estratégia de K-fold estratificado, fazendo a estratificação pela variável alvo. O DataFrame train já está disponível no seu workspace.

Este exercício faz parte do curso

Vencendo uma competição do Kaggle em Python

Ver curso

Instruções do exercício

  • Crie um objeto StratifiedKFold com 3 folds e embaralhamento.
  • Faça um loop sobre cada divisão usando o objeto str_kf. A estratificação será baseada na coluna "interest_level".
  • Para cada divisão, selecione os folds de treino e teste usando train_index e test_index.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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
Editar e executar o código