训练重叠样本的测试拆分

数据挖掘 机器学习 Python 分类 scikit-学习
2022-02-27 02:22:30

我正在对时间序列传感器数据(在 Python 中)进行分类,其中我将传感器数据分割成具有一定窗口长度(例如 3 秒)的样本。然而,样本也相互重叠。例如,第一个样本是 0s3s,秒是2.7s5.7秒...

我现在想知道,我如何才能对这些样本进行适当的训练测试拆分。现在,我看到了两种方法:

  1. 拆分样本而不先对其进行洗牌,然后将样本放在“边界”,以避免训练数据和测试数据之间的重叠。但是,这并不是最优的,因为我希望从整个数据集中获取用于训练和测试集的样本。否则我只会在数据序列上测试分类器,这可能与用于训练的序列非常不同。

  2. 首先将样本打乱,然后将它们拆分为测试训练。这将导致训练和测试数据之间的重叠,因此会产生过于乐观的结果。

有谁知道如何做到这一点?

3个回答

您可以先使用附加到所有样品的序列号对样品进行洗牌。现在,随机选择p%样本作为测试数据,并将(100-p)%样本作为训练数据。在此随机选择期间,请确保如果#n已选择序列样本作为测试,则不会选择#n-1& 。#n+1

以这种方式,

  1. 您不是在数据序列上测试分类器。
  2. 避免训练和测试样本之间的重叠。

odd按照开始时间戳的even顺序拆分样本。

两组之间没有重叠因为唯一的重叠是奇数和偶数样本之间

您可以从其中一组中获取训练数据和测试数据,而无需任何分离数据。

我建议您将过采样作为平衡数据集的一种可能方法。如果存在不可避免的重叠(听起来好像存在),那么您可以从所有数据创建一个数据集,平等地表示每个测量间隔,从而减少重叠时刻的偏差。