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