9
14

More than 3 years have passed since last update.

Prophetの時系列予測をPlotlyでよりわかりやすく可視化する

Last updated at Posted at 2020-05-03

概要

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)

download.png

この状態で、

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)

すると、Plotlyを用いたプロットが表示されます。
スクリーンショット 2020-04-30 17.38.07.png

同じく、plot_componentsは

fig = m.plot_components(forecast)

fig = plot_components_plotly(m, forecast) 
py.iplot(fig)

に書き換えると、Plotlyを用いた表示が出ます。
スクリーンショット 2020-04-30 17.39.01.png

プロットをグリグリしていると、こんな便利なものがほんとにタダでいいのか疑わしくなります。Prophet恐るべし。

はまりポイント

1. トレンド線、変化点はオプションで指定しないと表示されない

plot_plotlyを呼ぶ時に、trendおよびchangepointsオプションで指定する必要があります。

plot_plotly(m, forecast, trend=True, changepoints=True)

スクリーンショット 2020-04-30 17.40.13.png

2. Google Colaboratory上だとplotlyが表示されない

stackoverflowの投稿を参考にさせていただきました。
https://stackoverflow.com/a/57903750

plotly.ioをimportして、renderers.defaultcolabにセットします。

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")

スクリーンショット 2020-04-30 17.41.30.png

あとで試して驚愕したのですが、日本語をタイトルに設定しても特に文字化けせず普通に表示されました。Prophet恐るべし。(大事なことなので二回言いました)

まとめ

Colab上で時系列データをお手軽にグリグリできるのは何かと便利です。ぜひお試しあれ。

9
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
14