rolling_window 模块

将特征创建为滚动窗口中值的聚合(例如,平均值或最大值)。

RollingWindow

用于创建滚动窗口特征的转换类。

滚动窗口是按照 TimeSeriesDataSet 中的源时间临时定义的。 数据帧行中的源时间指示窗口的正确日期/时间边界。

如果输入数据帧不包含源时间,则将基于 max_horizon 参数对其进行创建。

示例:

data = {'store': [1] * 10 + [2] * 10 + [3] * 10,

'sales': [250, 150, 300, 200, 400, 300, 150, 200, 350, 100, 400, 300, 200, 450, 200, 350, 450, 150, 250, 500, 150, 400, 500, 300, 350, 250, 200, 400, 500, 450],

'customers': [28, 15, 30, 24, 47, 33, 15, 20, 36, 13, 38, 30, 25, 43, 20, 35, 46, 17, 28, 44, 15, 47, 50, 30, 35, 29, 25, 40, 48, 42],

'date': pd.to_datetime( ['2017-01-01', '2017-01-02', '2017-01-03', '2017-01-04', '2017-01-05', '2017-01-06', '2017-01-07', '2017-01-08', '2017-01-09', '2017-01-10'] * 3)}


>>> tsds = TimeSeriesDataSet(
data, time_series_id_column_names='store',
time_column_name='date', target_column_name='sales')
>>> window_size = 3
>>> transform_dict = {'sum': ['sales', 'customers'], 'quantile': 'sales'}
>>> window_opts = {'min_periods': 2}
>>> transform_opts = {'quantile': {'args': [0.25],
'kwargs': {'interpolation': 'lower'}}}
>>> rolling_window_transformer = RollingWindow(window_size,
transform_dict, window_opts, transform_opts)
>>> rolling_window_transformer.fit_transform(tsds).data.head(10)
                             customers  sales  customers_sum_window3
date       store origin
2017-01-01 1     2016-12-31         28    250                    nan
2017-01-02 1     2017-01-01         15    150                    nan
2017-01-03 1     2017-01-02         30    300                  43.00
2017-01-04 1     2017-01-03         24    200                  73.00
2017-01-05 1     2017-01-04         47    400                  69.00
2017-01-06 1     2017-01-05         33    300                 101.00
2017-01-07 1     2017-01-06         15    150                 104.00
2017-01-08 1     2017-01-07         20    200                  95.00
2017-01-09 1     2017-01-08         36    350                  68.00
2017-01-10 1     2017-01-09         13    100                  71.00

sales_sum_window3 sales_quantile_window3

date store origin 2017-01-01 1 2016-12-31 nan nan 2017-01-02 1 2017-01-01 nan nan 2017-01-03 1 2017-01-02 400.00 150.00 2017-01-04 1 2017-01-03 700.00 150.00 2017-01-05 1 2017-01-04 650.00 150.00 2017-01-06 1 2017-01-05 900.00 200.00 2017-01-07 1 2017-01-06 900.00 200.00 2017-01-08 1 2017-01-07 850.00 150.00 2017-01-09 1 2017-01-08 650.00 150.00 2017-01-10 1 2017-01-09 700.00 150.00