小编mlo*_*ing的帖子

分组时间序列(面板)数据的交叉验证

我使用面板数据:随着时间的推移,我观察了许多单位(例如人);对于每个单元,我都有相同固定时间间隔的记录。

当将数据分成训练集和测试集时,我们需要确保两个集是不相交的和顺序的,即训练集中的最新记录应该在测试集中最早的记录之前(参见例如这篇博客文章)。

面板数据是否有任何标准的 Python 交叉验证实现?

我试过 Scikit-Learn 的TimeSeriesSplit,它不能考虑组,GroupShuffleSplit不能考虑数据的顺序性质,见下面的代码。

import pandas as pd
import numpy as np
from sklearn.model_selection import GroupShuffleSplit, TimeSeriesSplit

# generate panel data
user = np.repeat(np.arange(10), 12)
time = np.tile(pd.date_range(start='2018-01-01', periods=12, freq='M'), 10)
data = (pd.DataFrame({'user': user, 'time': time})
        .sort_values(['time', 'user'])
        .reset_index(drop=True))

tscv = TimeSeriesSplit(n_splits=4)
for train_idx, test_idx in tscv.split(data):
    train = data.iloc[train_idx]
    test = data.iloc[test_idx]
    train_end = train.time.max().date()
    test_start = test.time.min().date()
    print('TRAIN:', train_end, '\tTEST:', test_start, '\tSequential:', train_end < test_start, …
Run Code Online (Sandbox Code Playgroud)

time-series python-3.x scikit-learn cross-validation panel-data

7
推荐指数
2
解决办法
2473
查看次数

pandas.to_datetime 给出 OutOfBoundsDatetime 错误

我有某种格式的数据,我想将其读入 pandas.DataFrame 中。有些行给我一个错误。下面是这些字符串之一的最小示例,但我有几个它不起作用的地方(奇怪的是有些它起作用的地方)。

确切的错误是:

OutOfBoundsDatetime,越界纳秒时间戳:2276-02-18 05:15:13

import pandas as pd 
pd.to_datetime('02/18/2276 5:15:13 AM', format='%m/%d/%Y %I:%M:%S %p')
Run Code Online (Sandbox Code Playgroud)

我用这个网站来制作我的格式字符串: https://pandas.pydata.org/pandas-docs/stable/ generated/pandas.Period.strftime.html

我很感激任何帮助!

pandas

3
推荐指数
1
解决办法
6439
查看次数