Tren estratificado / Validación / División de prueba en scikit-learn

Ya hay una descripción aquí de cómo hacer una división de tren / prueba estratificada en scikit a través de train_test_split (Tren estratificado / Prueba de división en scikit-learn) y una descripción de cómo dividir aleatoriamente el tren / validación / prueba a través de np.split (¿Cómo dividir los datos en 3 conjuntos (tren, validación y prueba)?) Pero, ¿qué hay de hacer una división de tren / validación / prueba estratificada?

La aproximación más cercana que viene a la mente para hacer una división / validación / prueba estratificada (en la etiqueta de la clase) es la siguiente, pero sospecho que hay una mejor manera que tal vez pueda lograr esto en una llamada de función o de una manera más precisa:

Digamos que queremos hacer una división de tren / validación / prueba 60/20/20, luego mi enfoque actual es hacer primero una división estratificada 60/40, luego hacer una división de estratifeida 50/50 en los primeros 40 para obtener finalmente un División 20/20/20 estratificada.

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)

Regrese si mi enfoque es correcto y / o si tiene un mejor enfoque.

Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta