Facebook先知未来数据框架



我有最近5年的月度数据。我正在用它来创建一个使用fb先知的预测模型。我最近5个月的数据如下:

data1['ds'].tail()
Out[86]: 55   2019-01-08
56   2019-01-09
57   2019-01-10
58   2019-01-11
59   2019-01-12

我已经在此基础上创建了模型,并制作了未来的预测数据帧。

model = Prophet(
interval_width=0.80,
growth='linear',
daily_seasonality=False,
weekly_seasonality=False,
yearly_seasonality=True,
seasonality_mode='additive'
)
# fit the model to data
model.fit(data1)
future_data = model.make_future_dataframe( periods=4, freq='m', include_history=True)

2019年12月之后,我需要下一年的前四个月。但接下来的4个月与2019年同期相比有所增加。

future_data.tail()
ds
59  2019-01-12
60  2019-01-31
61  2019-02-28
62  2019-03-31
63  2019-04-30

如何获得明年前4个月的未来数据帧?这里面有什么具体的参数可以调整年份吗?

问题是因为日期格式,即2019-01-12(根据您的问题,2019年12月(的格式为"%Y-%d-%m";因此,它为接下来的4个周期创建月末频率(用"m"表示(的数据。

以下是Prophet:创建未来数据帧的方式,仅供参考

dates = pd.date_range(
start=last_date,
periods=periods + 1,  # An extra in case we include start
freq=freq)
dates = dates[dates > last_date]  # Drop start if equals last_date
dates = dates[:periods]  # Return correct number of periods

因此,它推断出日期格式,并在未来的数据帧中进行推断。

解决方案:将训练数据中的日期格式更改为"%"Y-%m-%d";

在这里搜索合适的字符串分钟

根据文件,日期时间需要为YY-MM-DD格式-

Prophet的输入始终是一个包含两列的数据帧:ds和y。ds(日期戳(列的格式应为Pandas所期望的格式,最好是YYYY-MM-DD表示日期,YYYY-MM-DD HH:MM:SS表示时间戳。y列必须是数字,并且表示我们希望预测的度量

2019-01-12 in YY-MM-DD is 2019-12-01 ; using this
>>> dates = pd.date_range(start='2019-12-01',periods=4 + 1,freq='M')
>>> dates
DatetimeIndex(['2019-12-31', '2020-01-31', '2020-02-29', '2020-03-31',
'2020-04-30'],
dtype='datetime64[ns]', freq='M')

此处的其他格式;在先知文档中没有明确给出python

https://pandas.pydata.org/docs/reference/api/pandas.tseries.frequencies.to_offset.html

dates = pd.date_range(start='2022-03-17 11:40:00',periods=10 + 1,freq='min')
>>> dates
DatetimeIndex(['2022-03-17 11:40:00', '2022-03-17 11:41:00',
'2022-03-17 11:42:00', '2022-03-17 11:43:00',
..],
dtype='datetime64[ns]', freq='T')

最新更新