Trem estratificado / validação / divisão de teste no scikit-learn

Já existe uma descrição aqui de como fazer a divisão estratificada de trem / teste no scikit via train_test_split (Trem estratificado / divisão de teste no scikit-learn) e uma descrição de como dividir aleatoriamente o trem / validação / teste via np.split (Como dividir dados em 3 conjuntos (treinamento, validação e teste)?) Mas e quanto à divisão estratificada de trem / validação / teste.

A aproximação mais próxima que vem à mente para a divisão estratificada (no rótulo da classe) de trem / validação / teste é a seguinte, mas suspeito que haja uma maneira melhor de talvez conseguir isso em uma chamada de função ou de uma maneira mais precisa:

Digamos que queremos fazer uma divisão de trem / validação / teste 60/20/20, então minha abordagem atual é primeiro fazer a divisão estratificada 60/40 e, em seguida, fazer uma divisão estratídica 50/50 nos primeiros 40 para obter finalmente uma Divisão estratificada 60/20/20.

from sklearn.cross_validation import train_test_split
SEED = 2000
x_train, x_validation_and_test, y_train, y_validation_and_test = train_test_split(x, y, test_size=.4, random_state=SEED)
x_validation, x_test, y_validation, y_test = train_test_split(x_validation_and_test, y_validation_and_test, test_size=.5, random_state=SEED)

Volte se minha abordagem estiver correta e / ou se você tiver uma abordagem melhor.

Obrigado

questionAnswers(2)

yourAnswerToTheQuestion