概要
Facebook製の時系列予測ライブラリProphet、時系列予測について全くの知識が無くても、曜日の変動、全体のトレンド傾向等がプロットできてすばらしいです。
そのプロットについて、公式マニュアルには「plotlyを使ってよりインタラクティブに可視化できるよ」とさらっと書いているだけなのですが、いろいろいじってみたところ、以下のポイントにはまりました。
- トレンド線、変化点はオプションで指定しないと表示されない
- Google Colaboratory上だとplotlyが表示されない
誰かの役に立てばと思い、はまりポイントの解決法を共有します。
環境
macOS 10.15
Python 3.7.6
Prophet 0.6
Plotly 4.6.0
この記事のNotebook
以下にアップロードしてあります。
https://github.com/nekodango/prophet_plotly_sample
プロットでPlotlyを使う
公式のチュートリアルの通り、ここ
から"example_wp_log_peyton_manning.csv"をダウンロードして、読み込みます。
import pandas as pd
from fbprophet import Prophet
df = pd.read_csv('example_wp_log_peyton_manning.csv')
m = Prophet()
m.fit(df)
future = m.make_future_dataframe(periods=365)
forecast = m.predict(future)
以下のコードで通常のプロットが表示されます。
fig = m.plot(forecast)
この状態で、
from fbprophet.plot import plot_plotly, plot_components_plotly
import plotly.offline as py
py.init_notebook_mode()
してから
fig = plot_plotly(m, forecast)
py.iplot(fig)
同じく、plot_componentsは
fig = m.plot_components(forecast)
を
fig = plot_components_plotly(m, forecast)
py.iplot(fig)
プロットをグリグリしていると、こんな便利なものがほんとにタダでいいのか疑わしくなります。Prophet恐るべし。
はまりポイント
1. トレンド線、変化点はオプションで指定しないと表示されない
plot_plotly
を呼ぶ時に、trend
およびchangepoints
オプションで指定する必要があります。
plot_plotly(m, forecast, trend=True, changepoints=True)
2. Google Colaboratory上だとplotlyが表示されない
stackoverflowの投稿を参考にさせていただきました。
https://stackoverflow.com/a/57903750
plotly.io
をimportして、renderers.default
をcolab
にセットします。
from fbprophet.plot import plot_plotly, plot_components_plotly
import plotly.io as pio
pio.renderers.default = "colab"
で、描画する際にはfig.show()
します。
fig = plot_plotly(m, forecast)
fig.show()
Colabですぐ試せるようノートブックを以下にアップロードしてあるのでお試しください。
https://github.com/nekodango/prophet_plotly_sample/blob/master/prophet_plotly_colab.ipynb
おまけ
Plotlyのプロットにタイトルを付けたい場合、以下でできます。
fig.update_layout(title="plpt_plotly")
あとで試して驚愕したのですが、日本語をタイトルに設定しても特に文字化けせず普通に表示されました。Prophet恐るべし。(大事なことなので二回言いました)
まとめ
Colab上で時系列データをお手軽にグリグリできるのは何かと便利です。ぜひお試しあれ。