时间序列预测算法----Prophet

上周同事在分享爬虫的过程中,说到了动态调度的难度在于网站的每天的更新的次数,然后我就想到关于时间序列的预测,是否可以解决这个问题。
关于时间序列的建模,AR,MA,ARMA等传统的算法已经很成熟,但是效果不是很好,facebook开源的工具Prophet效果就好很多

Github地址:
https://github.com/facebook/prophet
官方网址:
https://facebook.github.io/prophet/

prophet 所做的事情就是:
(1)输入已知的时间序列和对应的值(Prophet是单特征模型,输入只有两列,日期列必须被称为“ds”,数值列被称为“y”);

时间序列预测算法----Prophet_第1张图片
(2)输入需要预测的时间序列的长度,比如 periods 设置365,就表示预测365个新值;
(3)使用已经有的时间序列和对应值训练模型,并输出结果。
(4)输出结果包括目标值,上界和下界,等,还可以画出趋势曲线。
时间序列预测算法----Prophet_第2张图片
其中yhat为预测的结果,yhat_lower和yhat_upper分别是预测的下界和上界
时间序列预测算法----Prophet_第3张图片

实现代码如下:

from fbprophet import Prophet
import pandas as pd
df = pd.read_excel('./test.xlsx')
m = Prophet()
m.fit(df)
#这里预测是以天为维度 默认的是freq='D' ,
# freq: Any valid frequency for pd.date_range, such as 'D' or 'M'.  可以使用 pd.date_range定义任意的时间间隔
future = m.make_future_dataframe(periods=365)
forecast = m.predict(future)

dataFm = pd.DataFrame(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']])
dataFm.to_csv('./res.csv')

picter1 = m.plot(forecast)
picter1.show()
picter2 = m.plot_components(forecast)
picter2.show()

你可能感兴趣的:(机器学习)