【发布时间】:2020-03-17 08:54:05
【问题描述】:
我正在开展一个项目,其中我结合了 2 个时间序列数据集(例如 D1、D2)。 D1 与5-minutes 间隔,D2 与1-minute 间隔,所以我将D1 转换为1 分钟间隔并与D2 结合。现在我想根据这些条件将这个新数据集D1D2 拆分为训练集、测试集和有效集:
注意:我已经搜索了很多并试图找到解决我的问题的方法,但没有任何答案适合我的问题,所以请不要将其标记为重复! p>
- 有效集合应该是数据集末尾的 60 个值。
- 那么,测试集应该是最近的值,直到
valid set - 然后,我将使用剩余数据设置火车。
这是我现在的拆分方式:
def split_train_test(dataset, train_size, test_size):
train = dataset[:train_size, :]
test = dataset[test_size:, :]
# split into input and outputs
train_X, train_y = train[:, :-1], train[:, -1]
test_X, test_y = test[:, :-1], test[:, -1]
# reshape input to be 3D [samples, timesteps, features]
train_X = train_X.reshape((train_X.shape[0], 1, train_X.shape[1]))
test_X = test_X.reshape((test_X.shape[0], 1, test_X.shape[1]))
print(train_X.shape, train_y.shape, test_X.shape)
return train, test, train_X, train_y, test_X, test_y
但是现在我需要在以上条件的基础上转换成train、test和split?
我该怎么做?并且它是拆分时间序列数据集的正确方法吗?
【问题讨论】:
-
可以选择倒数行数:
train_df = df[:-60, :] -
所以,它会给我
valid set的最后 60 条记录,但我怎样才能将剩余的记录拆分为train and test? -
我在问题中提到了上面的3个条件。
-
Then, the test set should be the most recent values till to the valid set是什么意思? -
这意味着,我们在
valid set中取最后 60 个值,也就是说,我们必须通过保留数据集的最后 60 条记录,将最近的值作为test set。
标签: python pandas machine-learning scikit-learn train-test-split