2024-09-28 21:17:07 发布
网友
所以我用sklearn的timeSeriesSplit来拆分数据
tscv = TimeSeriesSplit(n_splits=3)
现在我知道为了得到分割索引,我们必须迭代tscv.split(X)。我这里的问题是,是否可以直接到达最后一个拆分,而不需要迭代这些拆分。函数返回的对象不完全是一个列表,所以我不确定如何执行此操作?我只需要最后一次拆分,因为我的数据很大,而且拆分的数量也很大。在
tscv.split(X)
提前谢谢
你可以试试这个
def get_last_cv(splits): splits_deque = deque(splits, maxlen=1) last_element = splits_deque.pop() train,test = last_element return train,test
然后得到这样的指数
其中X是您的数据
X
Split方法在TimeSeriesSplit中生成索引的拆分。为了得到特定的分割,你需要迭代到它。它被用来迭代时间序列交叉验证的所有可能的分割。在
TimeSeriesSplit
如果cv分割中测试数据的大小等于s。然后,不管您进行多少次拆分,最后一次拆分集train_data=all data except last s data point和{}。所以,如果您想直接进行最后一次拆分:将数据切片。例如,如果数据是一个numpy数组X:
s
train_data
all data except last s data point
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]])
此外,如果您在拆分时设置了“最大列车大小”。那你在切片的时候也要注意这个问题。有关详细信息,请参阅TimeSeriesSplitdocumentation here。
你可以试试这个
然后得到这样的指数
^{pr2}$其中
X
是您的数据Split方法在
TimeSeriesSplit
中生成索引的拆分。为了得到特定的分割,你需要迭代到它。它被用来迭代时间序列交叉验证的所有可能的分割。在如果cv分割中测试数据的大小等于}。所以,如果您想直接进行最后一次拆分:将数据切片。例如,如果数据是一个numpy数组
s
。然后,不管您进行多少次拆分,最后一次拆分集train_data
=all data except last s data point
和{X
:此外,如果您在拆分时设置了“最大列车大小”。那你在切片的时候也要注意这个问题。有关详细信息,请参阅TimeSeriesSplitdocumentation here。
相关问题 更多 >
编程相关推荐