数学建模神器——Facebook时间序列预测库Prophet

最开始先交代点背景:这几天都一直在忙着做学校研究生数学建模的选拔赛,题目是2020年MathorCup高校数学建模挑战赛B题,有兴趣的童鞋可以去看看哈,主要是研究关于国家养老服务床位未来的发展趋势(本身题目里没有给足够多的数据,所以需要自己动手搜集,令人头大)。本来最开始想到的是灰色预测或者ARIMA时间序列模型,结果无意之中发现了非常强大的Facebook开源的Prophet时间序列预测工具,操作简单,所以特别写了这篇博客总结下Prophet的原理、安装和使用。

一、Prophet算法的原理

Prophet 是一种基于附加模型预测时间序列数据的过程。Prophet在Facebook的许多应用程序中用于生成可靠的计划和目标设定预测。在大多数情况下,它的性能要优于其他任何方法。无需人工即可获得有关杂乱数据的合理预测。Prophet对异常值,丢失的数据以及时间序列中的急剧变化具有鲁棒性,能够很好地处理异常值,为用户提供了许多调整和调整预测的可能性,可以在R和Python中实现Prophet过程。

具体原理可以查看Facebook发布的论文,可以在github上免费获取,题目为《Forecasting at Scale》,传送地址:

  • https://facebook.github.io/prophet/
  • https://github.com/facebook/prophet

二、fbprophet库的安装(for python)

Prophet目前可以通过Python和R调用,这里只介绍在python上怎么安装和使用(其实是博主不太会用R)。我们将在Win10下的Anaconda虚拟环境中安装fbprophet库。Anaconda的安装和使用会在之后的博客中专门总结,有兴趣的可以点一下关注哈!

(1) 打开创建好的虚拟环境

activate ML(虚拟环境名)

(2)安装PyStan

conda install pystan

(2) 安装fbprophet库

conda install -c conda-forge fbprophet

(3) 安装plotly

conda install plotly -y 

(4) 导入fbprophet库

from fbprophet import Prophet

注:切记不能直接使用pip安装!


三、Prophet库的使用

from fbprophet import Prophet  # 导入Prophet
# 数据预处理
train_data = dataset[['年份', '60岁以上人口数(万人)']]
train_data.columns = ['ds', 'y'] 
# 模型建立和训练,interval_width参数表示置信度
model = Prophet(interval_width=0.95)
model.fit(train_data)
# 数据预测,periods表示预测点数,freq表示预测频率
future = model.make_future_dataframe(periods=3,freq='YS') # 预测未来
forecast = model.predict(future)
model.plot(forecast) # 绘制图形

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xylbill97/article/details/107311051