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

如何在Python的Facebook Prophet模型中添加自定义假期时段?

在Facebook Prophet中添加自定义大学暑期假期时段

步骤1:构建自定义假期DataFrame

Prophet要求假期数据必须包含holiday(假期名称)和ds(日期)列,可选lower_window和upper_window来定义假期影响的前后窗口期。针对你提到的5月底至9月中旬的暑期假期,需要生成对应年份的完整日期范围:

import pandas as pd

# 根据你的数据时间范围调整年份区间
target_years = range(2018, 2024)
custom_holiday_list = []

for year in target_years:
    # 自定义假期的起始和结束日期(根据实际数据的骤降时段微调)
    start = pd.to_datetime(f"{year}-05-25")
    end = pd.to_datetime(f"{year}-09-15")
    # 生成该时段内的所有日期
    daily_dates = pd.date_range(start=start, end=end)
    # 为每个日期添加假期条目
    for date in daily_dates:
        custom_holiday_list.append({
            "holiday": "university_summer_break",
            "ds": date,
            "lower_window": 0,  # 仅当天生效,若要包含放假前影响可设为负数(如-7)
            "upper_window": 0   # 仅当天生效,若要包含收假后影响可设为正数(如3)
        })

# 转换为DataFrame
custom_holidays_df = pd.DataFrame(custom_holiday_list)

步骤2:合并已有英国国家假期数据

将你已有的英国国家假期DataFrame和自定义假期DataFrame合并,确保列名完全一致:

# 假设你的英国国家假期数据存储在uk_holidays_df中
combined_holidays_df = pd.concat([uk_holidays_df, custom_holidays_df], ignore_index=True)

步骤3:传入合并后的假期数据训练模型

初始化Prophet模型时,将合并后的假期DataFrame传入holidays参数,再拟合你的电子资源使用量数据:

from prophet import Prophet

# 初始化模型并传入合并后的假期数据
model = Prophet(holidays=combined_holidays_df)
# 拟合你的数据集(假设数据集为library_usage_df,包含ds和y列)
model.fit(library_usage_df)

额外注意事项

  • 日期校准:根据实际数据中使用量骤降的精确时间段调整start和end日期,比如如果5月20日就开始下降,就把起始日改成{year}-05-20。
  • 窗口期调整:如果假期前后的使用量有波动(比如放假前一周使用量逐步下降),可以调整lower_window(如设为-7,代表假期前7天开始生效)或upper_window(收假后几天生效)。
  • 重复检查:合并后可以用combined_holidays_df.duplicated(subset=['ds', 'holiday']).sum()检查是否有重复的假期条目,避免干扰模型训练。

内容的提问来源于stack exchange,提问作者Qusai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:06:22