我已经阅读了一些关于各种简历方法的帖子。但我不明白的是为什么在函数中混洗数据会导致准确性显着提高以及何时这样做是正确的。
在我的 921 *10080 大小的时间序列数据集中,其中每一行是一个区域中特定位置的水温时间序列,最后两列是带有 2 个组的标签,即。高风险(水中细菌含量高)和低风险(水中细菌含量低),根据我是否设置 "shuffle=True"(achieved accuracy of around 75%)accuracy of 50%"shuffle=False" 中设置 StratifiedKFold 时,准确性差异很大,如下所示:

n_folds = 5
skf = StratifiedKFold(n_splits=n_folds, shuffle=True)
sklearn 文档说明如下:

我不确定我是否正确解释了文档 - 非常感谢解释。另外,我有几个问题:
1)为什么改组后准确率有这么大的提升?我过拟合了吗?我应该什么时候洗牌?
2)鉴于所有样本均来自同一地区,因此它们可能不是独立的。这如何影响洗牌?洗牌还有效吗?
3)改组是否将标签与其对应的 X 数据分开? (答案更新:否。Shuffling 不会将标签与其对应的 X 数据分开)
谢谢

最佳答案

你的问题很棘手,可能最好放在 here



您不是在时间序列 future 中使用分类问题吗?您正在使用相关变量(水温的时间序列)来预测标签。对我来说,这听起来很冒险,我认为预测标签的机会不大。只需考虑一种情况:

Location  Time1 Time2 Time3  Label
A         3       2    1      1
B         100     99   98     1
C         98      99   100    0

所以在这个例子中,标签 1 是一个下降的时间序列,标签 0 是一个上升的时间序列,但我敢打赌,每个分类器在不连接列的趋势组件的情况下学习它都有问题。

回到你的问题,这可以帮助你理解改组:difference between StratifiedKFold and StratifiedShuffleSplit in sklearn

关于python - 我什么时候应该在 StratifiedKFold 中洗牌,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59619291/

10-12 18:04