如何调整Facebook Prophet参数,获取次年首4个月预测数据框?
解决Prophet预测指定年份未来月份的问题
我来帮你搞定这个预测日期的问题~你当前的问题根源在于make_future_dataframe是基于现有数据的最后一条日期往后累加指定周期的,你的数据最后日期是2019-01-12,用freq='m'和periods=4自然会生成2019年的后续月份。要得到2020年的前4个月,最直接可靠的方式是手动构建未来日期数据框,具体方法如下:
方法1:手动生成目标日期范围
你可以直接指定想要预测的2020年1-4月的日期(比如每月月末,和你之前的频率保持一致),再按需和历史数据拼接:
import pandas as pd # 生成2020年1-4月的月末日期序列 future_dates = pd.date_range(start='2020-01-31', end='2020-04-30', freq='M') # 转换为Prophet要求的DataFrame格式 future_data = pd.DataFrame({'ds': future_dates}) # 如果需要包含历史数据(比如要查看模型对历史的拟合情况),就把原数据的日期列和未来日期拼接 future_data = pd.concat([data1[['ds']], future_data]).reset_index(drop=True)
方法2:调整周期数(不推荐,不够直观)
如果一定要用make_future_dataframe,你需要计算从2019-01-12到2020-01-31需要的月度周期数,再加上4个月,但这种方式会生成中间所有月份的日期,若不需要中间数据则没必要:
# 从2019-01-12到2020-01-31约12个月度周期,加上目标4个月,共设为16个周期 future_data = model.make_future_dataframe(periods=16, freq='m', include_history=True) # 筛选出2020年1-4月的日期 future_data = future_data[(future_data['ds'] >= '2020-01-01') & (future_data['ds'] <= '2020-04-30')] # 如需保留历史数据,再和原数据拼接 future_data = pd.concat([data1[['ds']], future_data]).reset_index(drop=True)
显然第一种方法更直接清晰,能精准控制你想要的预测日期范围,避免生成多余的中间数据。
内容的提问来源于stack exchange,提问作者dg S
相关产品推荐
相关产品推荐

