我目前正在处理一份庞大的不平衡数据集,并想知道是否可以使用sklearn中的Time Series Splits Cross-Validation将我的训练样本分成几个“折叠”。我希望每个折叠只包含特定时间段内的截面观察。
如先前所述,我正在处理一个利用Pandas的多级索引的不平衡面板数据集。这里提供一个可复制的示例以提供更多直觉:
arrays = [np.array(['A', 'A', 'A', 'B', 'B', 'C', 'C', 'D', 'D', 'D', 'D']),
np.array(['2000-01', '2000-02', '2000-03', '1999-12', '2000-01',
'2000-01', '2000-02', '1999-12', '2000-01', '2000-02', '2000-03'])]
s = pd.DataFrame(np.random.randn(11, 4), index=arrays)
例如,我想最初将所有1999-12的横截面单元作为训练样本,将所有2000-01的横截面单元作为验证。 接下来,我想将1999-12和2000-01年的所有横截面单元用于训练,将2000-02的所有横截面单元用于验证,以此类推。 这个可以用TimeSeriesSplit函数吗?还是我需要去其他地方找?
GridSearch
的cv
参数和/或PredefinedSplit
来完成,但这似乎超出了问题的范围。如果你遇到麻烦,可以考虑发布一个新问题。 - Charles Landau