概述
例子代码
https://github.com/lilihongjava/prophet_demo/tree/master/multiplicative_seasonality
# encoding: utf-8
"""
@author: lee
@time: 2019/8/6 8:55
@file: main.py
@desc:
"""
from fbprophet import Prophet
import pandas as pd
def main():
df = pd.read_csv('./data/example_air_passengers.csv')
m = Prophet()
m.fit(df)
future = m.make_future_dataframe(50, freq='MS')
forecast = m.predict(future)
fig = m.plot(forecast)
fig.show()
m = Prophet(seasonality_mode='multiplicative')
m.fit(df)
forecast = m.predict(future)
fig = m.plot(forecast)
fig.show()
fig = m.plot_components(forecast)
fig.show()
m = Prophet(seasonality_mode='multiplicative')
m.add_seasonality('quarterly', period=91.25, fourier_order=8, mode='additive')
m.add_regressor('regressor', mode='additive')
if __name__ == "__main__":
main()
默认情况下,Prophet是加法季节性,论文中公式为y(t) = g(t) + s(t) + h(t),这意味着季节性的影响是以加法的方法加到趋势中以获得预测。下面预测航空旅客数量的时间序列是加法季节性不起作用的一个例子:
# Python
df = pd.read_csv('../examples/example_air_passengers.csv')
m = Prophet()
m.fit(df)
future = m.make_future_dataframe(50, freq='MS')
forecast = m.predict(future)
fig = m.plot(forecast)
这个时间序列有一个明显的年度周期,但预测的季节性在时间序列开始时太大而在结束时太小。在上面这个时间序列里,季节性不是prophet所假设的恒定加性因子,而是随着趋势而增长。这是乘法季节性的一个案例。
prophet可以通过设置seasonality_mode='multiplicative'
参数来建模乘法季节性,公式为y(t) = g(t) *s(t) * h(t):
以下组件图显示季节性占趋势的百分比:
设置了seasonality_mode='multiplicative'
,假日效应也将被建模为乘法。任何添加的季节性或额外的回归量将默认使用seasonality_mode
设置的内容,但可以通过指定mode='additive'
或mode='multiplicative'
作为参数来覆盖seasonality_mode设置的内容
。
例如,以下内置季节性设置为乘法,但是可以把季节性quarterly和额外回归量regressor设置为加法:
# Python
m = Prophet(seasonality_mode='multiplicative')
m.add_seasonality('quarterly', period=91.25, fourier_order=8, mode='additive')
m.add_regressor('regressor', mode='additive')
加法和乘法额外回归量将显示在组件图的单独面板中。
参考资料:
https://facebook.github.io/prophet/docs/multiplicative_seasonality.html
最后
以上就是欢喜泥猴桃为你收集整理的prophet Multiplicative Seasonality乘法季节性例子代码的全部内容,希望文章能够帮你解决prophet Multiplicative Seasonality乘法季节性例子代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复