votingclassifier load_iris datasets python scikit-learn time-series cross-validation

python - load_iris - ¿Cómo implementar las pruebas de avance en sklearn?



datasets load_iris() (2)

Creo que podría usar una división de series temporales en lugar de su propia implementación o como base para implementar un método de CV que es exactamente como usted lo describe.

Después de investigar un poco, parece que alguien agregó un max_train_size al TimeSeriesSplit en este PR que parece que hace lo que usted quiere.

En sklearn, GridSearchCV puede tomar una tubería como parámetro para encontrar el mejor estimador mediante la validación cruzada. Sin embargo, la validación cruzada habitual es la siguiente:

para cruzar la validación de una serie temporal de datos, los datos de entrenamiento y prueba a menudo se dividen de esta manera:

Es decir, los datos de prueba deben estar siempre por delante de los datos de entrenamiento.

Mi pensamiento es:

  1. Escriba mi propia clase de versión k-fold y pasándola a GridSearchCV para que pueda disfrutar de la conveniencia de pipeline. El problema es que parece difícil permitir que GridSearchCV use índices específicos de entrenamiento y datos de prueba.

  2. Escribe una nueva clase GridSearchWalkForwardTest que es similar a GridSearchCV, estoy estudiando el código fuente grid_search.py ​​y encuentro que es un poco complicado.

Cualquier sugerencia es bienvenida.


Mi opinión es que debes intentar implementar tu propio GridSearchWalkForwardTest. Utilicé GridSearch una vez para hacer el entrenamiento e implementé el mismo GridSearch y no obtuve los mismos resultados, a pesar de que debería.

Lo que hice al final es usar mi propia función. Tienes más control sobre el entrenamiento y el conjunto de pruebas y tienes más control sobre los parámetros que entrenas.