首页 > 解决方案 > 使用 timeseriessplit 函数拆分时间序列数据

问题描述

我正在处理来自不同传感器的时间序列数据。我的数据 35k 行 × 12 列(11 个特征 + 1 个目标列)。由于我的数据的时间序列性质。洗牌操作会产生偏差,因为模型可以在训练阶段看到未来的数据。这就是为什么我不想洗牌我的数据。首先,我尝试在 train_test_split 函数中使用 shuffle=False 参数。但是我的数据集不平衡,这就是为什么我的验证损失不能减少的原因,在每个试验和时期它开始增加。

在第二个选项中,我决定使用 TimeSeriesSplit 函数而不是 train_test_split。并使用以下代码片段:

from sklearn.model_selection import TimeSeriesSplit
tss = TimeSeriesSplit(n_splits = 5)

for train_index, test_index in tss.split(X):
    X_train, X_test = X[train_index, :], X[test_index,:]
    y_train, y_test = y[train_index], y[test_index]

但是,当我在拟合 LSTM 模型后检查训练结果时,我的验证损失又增加了?

我是否错误地使用了索引内容,还是需要实现不同的嵌套循环?

标签: pythonmachine-learningdeep-learningtime-seriescross-validation

解决方案


推荐阅读