You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 16:28:10