第三章 fpbrohet

Prophet

from prophet import Prophet

创建对象

m = Prophet(growth=‘linear’)
Prophet对象解析
参数
growth:默认是linear,可以是logistic
changepoint_range=0.8 ,默认是80% ,推断点的存在范围,根据这个范围的推断点来预测趋势的
holidays=holidays,类型 pandas.core.frame.DataFrame
Holiday_prior_scale:默认=10.0 调节假期强度的参数
组件模型,除非在假期输入中被覆盖。
yearly_seasonality:默认是’auto’,可以是True, False, or a number of Fourier terms to generate.
用于指定每个季节的变化量用傅里叶级数拟合这个曲线,如果yearly_seasonality是int值越大,表示使用的傅里叶阶数越高,拟合越准确------季节性的傅里叶顺序
seasonality_mode=‘additive’, ‘additive’ (default) or ‘multiplicative’. 加法季节性或乘法季节性
add_seasonality 添加指定的季节

logistic函数(也称expit):

对于表现出强烈季节性模式而非趋势变化的时间序列,强制趋势增长率持平可能很有用。这可以通过growth=flat在创建模型时简单地传递来实现:

请注意,如果将其用于没有恒定趋势的时间序列,则任何趋势都将与噪声项相符,因此预测中将存在高预测不确定性。
除了这三个内置趋势函数(分段线性、分段逻辑增长和平坦)之外,要使用趋势,您可以从github下载源代码,在本地分支中根据需要修改趋势函数,然后安装该本地版本. 这个 PR很好地说明了实现自定义趋势必须要做的事情,这个实现了阶梯函数趋势和这个实现了 R 中的新趋势。

holiday
构建holiday,以下是指定某个日期名称的假期时间,构建pandas列表
playoffs = pd.DataFrame({
‘holiday’: ‘playoff’,
‘ds’: pd.to_datetime([‘2008-01-13’, ‘2009-01-03’, ‘2010-01-16’,
‘2010-01-24’, ‘2010-02-07’, ‘2011-01-08’,
‘2013-01-12’, ‘2014-01-12’, ‘2014-01-19’,
‘2014-02-02’, ‘2015-01-11’, ‘2016-01-17’,
‘2016-01-24’, ‘2016-02-07’]),
‘lower_window’: 0,
‘upper_window’: 1, # 指定节假日延后的天数
})
superbowls = pd.DataFrame({
‘holiday’: ‘superbowl’,
‘ds’: pd.to_datetime([‘2010-02-07’, ‘2014-02-02’, ‘2016-02-07’]),
‘lower_window’: 0,
‘upper_window’: 1,
})
holidays = pd.concat((playoffs, superbowls))

make_future_dataframe
periods=天数,起始:从原始数据开始第一天的值

“”"
使用外推生成模型模拟趋势。
def make_future_dataframe(self, periods, freq=‘D’, include_history=True):

periods:要向前预测的整数时期数,列数。
freq:pd.date_range 的任何有效频率,例如“D”或“M”。day or month频率选择
include_history:是否包含历史时期:default=True。

我的理解:
它是提取了原来数据的x坐标,组成集合,x坐标是时间序列,类型是datetime
“”"

add_country_holidays
您可以使用add_country_holidays方法 (Python) 或函数 ®使用特定国家/地区假期的内置集合。指定国家/地区的名称,然后除了通过上述holidays参数指定的任何假期外,还将包括该国家/地区的主要假期:
m = Prophet(holidays=holidays)
m.add_country_holidays(country_name=‘US’)
m.fit(df)

参数:
Prophet 还包括以下国家的假期:巴西 (BR)、印度尼西亚 (ID)、印度 (IN)、马来西亚 (MY)、越南 (VN)、泰国 (TH)、菲律宾 (PH)、巴基斯坦 ( PK)、孟加拉国 (BD)、埃及 (EG)、中国 (CN) 和俄罗斯 (RU)、韩国 (KR)、白俄罗斯 (BY) 和阿拉伯联合酋长国 (AE)。

add_seasonality
指定自定义季节性

prophet自带的季度:年度季节性、周度季节性、日季节性,唯独没有月的季节性,需要我们手动添加
yearly_seasonality=‘auto’,
weekly_seasonality=‘auto’,
daily_seasonality=‘auto’,

添加具有指定周期、傅立叶数的季节性分量组件和先验规模。

def add_seasonality(self, name, period, fourier_order, prior_scale=None,
mode=None, condition_name=None):

“”"
增加傅立叶分量的数量允许季节性
变化更快(有过度拟合的风险)。每年的默认值
和每周季节性分别为 10 和 3。

    增加先验尺度将使这种季节性成分更多
    灵活性,减少会抑制它。如果未提供,将使用
    在 Prophet 初始化时提供了seasonity_prior_scale(默认值
    到 10)。

    模式可以指定为“加法”或“乘法”。如果不
    指定,self.seasonality_mode 将被使用(默认为additive)。
    加法意味着将季节性添加到趋势中,
    乘法意味着它将乘以趋势。

    如果提供了 condition_name,则数据帧传递给 `fit` 和
    `predict` 应该有一个带有指定 condition_name 的列
    包含决定何时应用季节性的布尔值。

    参数
    ----------
    name:季节性组件的字符串名称。
    period:一个周期内的浮动天数。
    Fourier_order:要使用的傅立叶分量的整数数量。
    prior_scale:此组件的可选浮动先验比例。

模式:可选的“加法”或“乘法”
condition_name:季节性条件的字符串名称。

用法
m = Prophet(weekly_seasonality=False)
m.add_seasonality(name=‘monthly’, period=30.5, fourier_order=5)

plot_components
def plot_components(self, fcst, uncertainty=True, plot_cap=True,
weekly_start=0, yearly_start=0, figsize=None):
参数
fcst:传入的数据 self.predict 的 pd.DataFrame 输出。
uncertainty:可选的布尔值来绘制不确定性区间。
plot_cap:可选布尔值,指示是否应显示容量在图中,如果可用。
weekly_start: 可选的 int 指定每周的开始日期
季节性图。 0(默认)从星期日开始一周。 1班
从 1 天到星期一,依此类推。
yearly_start: 可选 int 指定每年的开始日期
figsize: 可选的元组宽度,以英寸为单位的高度。
将绘制可用的:趋势、假期、每周
季节性和年度季节性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值