es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  , , ,

Answer

  1. Avatar for 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.

    from sklearn.model_selection import TimeSeriesSplit
    tscv = TimeSeriesSplit(n_splits=3)
    for train_index, test_index in tscv.split(X):
        X_train, X_test = X[train_index], X[test_index]
        y_train, y_test = y[train_index], y[test_index]
    

    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.

Comments are closed.