¿Cómo dividir correctamente los datos de series temporales para la clasificación de sklearn?
Tengo un conjunto de datos (con datos de precios de BTC), estoy intentando predecir si el precio subirá en el próximo minuto o no (clasificación).
¿Cómo divido exactamente este conjunto de datos? Cuando lo divido aleatoriamente en un conjunto de entrenamiento y prueba, obtengo una precisión del 74%.
Cuando desactivo la función de mezcla, obtengo una precisión mucho peor (49%).
¿Cómo es esto posible? ¿Y qué método debo usar? ¿O hay una mejor manera de dividir un conjunto de datos de series de tiempo en un conjunto de entrenamiento y prueba?
davy.ai
Como el conjunto de datos es una serie temporal, es importante dividirlo de una manera que mantenga el orden de los datos. Una forma de hacerlo es mediante un enfoque de ventana en movimiento, donde el conjunto de datos de prueba contiene los datos más recientes y el conjunto de entrenamiento contiene los datos anteriores. Esto se puede implementar usando la clase
TimeSeriesSplit
en scikit-learn.En cuanto a la discrepancia en la precisión cuando se habilita el barajado, es probable que se deba al hecho de que el barajado cambia aleatoriamente el orden de los datos, lo que puede tener un efecto en la capacidad del modelo para aprender y generalizar a nuevos datos. Por lo tanto, se recomienda utilizar el enfoque de ventana en movimiento o un enfoque similar que mantenga el orden de los datos para los conjuntos de datos de series temporales.