sklearn: validación cruzada definida por el usuario para datos de series temporales

Estoy tratando de resolver un problema de aprendizaje automático. Tengo un conjunto de datos específico conseries de tiempo elemento. Para este problema estoy usando la conocida biblioteca de Python:sklearn. Hay muchos iteradores de validación cruzada en esta biblioteca. También hay varios iteradores para definir la validación cruzada usted mismo. El problema es que realmente no sé cómo definir la validación cruzada simple para series de tiempo. Aquí hay un buen ejemplo de lo que intento obtener:

Supongamos que tenemos varios períodos (años) y queremos dividir nuestro conjunto de datos en varios fragmentos de la siguiente manera:

data = [1, 2, 3, 4, 5, 6, 7]

train: [1]                test: [2] (or test: [2, 3, 4, 5, 6, 7])
train: [1, 2]             test: [3] (or test: [3, 4, 5, 6, 7])
train: [1, 2, 3]          test: [4] (or test: [4, 5, 6, 7])
...
train: [1, 2, 3, 4, 5, 6] test: [7]

Realmente no puedo entender cómo crear este tipo de validación cruzada con las herramientas de sklearn. Probablemente debería usarPredefinedSplit desklearn.cross_validation como eso:

train_fraction  = 0.8
train_size      = int(train_fraction * X_train.shape[0])
validation_size = X_train.shape[0] - train_size

cv_split = cross_validation.PredefinedSplit(test_fold=[-1] * train_size + [1] * validation_size)

Resultado:

train: [1, 2, 3, 4, 5] test: [6, 7]

Pero aún así no es tan bueno como una división de datos anterior

Respuestas a la pregunta(2)

Su respuesta a la pregunta