Prophet,Echarts,D3的巧妙结合!

本系统由于功能点较多,且背后涉及的算法难易程度相差较大,主体有两个重点的算法支持(这里只介绍prophe时间序列预测算法),可视化方面则是对大数据背后潜在的规律经过特点分析之后再进一步完成探索与呈现。

系统整体概览

Prophet时间序列模型

Prophet时间序列模型,对于官方的介绍CSDN与知乎已经近乎完备(且官方)地将其介绍了一遍,由于该算法相较于其他预测算法较为冷门(创造晚,最开始以美国橄榄球联盟的数据演示),因此知道的人较少,你搜索的结果与我应该是一致的。我直接从实践开始。

算法环境的安装,一路走来,碰上了需要大坑小坑,最完备且最好的方法应该是这一篇博客,十分建议使用 Anaconda 来完成环境的配置,安装教程。

经过简单的阅读后就可以了解到该算法的输入与输出。我们将原始数据(一个20G的CSV文件)中的无用数据进行清洗,仅提取我们所需的时间与记录人次。最终生成了一个仅包含两列数据 (ds:datatimes与y:yard) 的csv。完成了自2016起三年来山东某城市当日的医保就诊人次,自此数据处理部分大致完成。

import pandas as pd
from fbprophet import Prophet
import matplotlib.pyplot as plt

df = pd.read_csv('per_year.csv')#读取数据
print(df)
m = Prophet()
m.fit(df)
future = m.make_future_dataframe(periods=365)#期望预测的天数
future.tail()
forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
print(forecast)
print(type(forecast))
forecast.to_csv('ans_per_year.csv')#将结果详细地保存至本地,便于下一步的分析
fig1 = m.plot(forecast)
plt.show()
fig2 = m.plot_components(forecast)
plt.show()

在算法的运行过程中得到预测的结果和计算过程中的中间值,如trend,yearly,weekly等。而最后的结果则保存在我们生成的csv中,ds与yhat。至此,算法的应用方面已经结束,接下来就是可视化部分的内容了。

算法运行过程中的中间值