TimeSeriesSplit 中的
Split 方法生成索引拆分。 为了获得特定的拆分,您需要对其进行迭代。 它被用来迭代所有可能的分割以进行时间序列交叉验证。
如果 cv 拆分中的测试数据大小等于 s。然后,无论您进行多少次拆分,最后一次拆分设置 train_data = all data except last s data point 和 test_data as last s data points。因此,如果您想直接进行最后一次拆分:切片数据。例如。如果你的数据是一个 numpy 数组 X:
import numpy as np
from sklearn.model_selection import TimeSeriesSplit
X = np.array([[1, 2], [0, 4], [1, 2], [2, 4] ,[1, 2], [7, 4], [8, 2], [5, 4]])
n_splits = 2 # select no of splits required
tscv = TimeSeriesSplit(n_splits = n_splits)
n_samples = X.shape[0] # this is how test_size (s)
s = n_samples//(n_splits + 1) # is evaluated internally
X_train_last, X_test_last = X[ :-s], X[-s: ] # s=2 for this split
X_train_last
# array([[1, 2],
# [0, 4],
# [1, 2],
# [2, 4],
# [1, 2],
# [7, 4]])
X_test_last
# array([[8, 2],
# [5, 4]])
另外,如果你设置了“max_train_size”,同时拆分。那么你在切片时也需要注意这一点。详情请参考 TimeSeriesSplit documentation here。