こんにちは、機械学習の講師をしている木下です!
ビックデータ自体の今、時系列データが多く取得できるようになっています。しかし、時系列データは分析・可視化・解釈が難しく、多くの人の頭を悩ませています。
多くの人が用いているのが、Prophet という非常に便利なライブラリです!Prophet を用いると簡単に分析できるのですが、その後の解釈や可視化の難しさはまだ課題として残っています。
ここでは、そんな時に便利なライブラリ plotly について Google Colaboratory を用いて初学者向けに解説していきます。
- これから時系列データ分析を始めてみたい!
- 予測した結果を綺麗に可視化してみたい!
- 動的なグラフを書き出す方法を知りたい!
目次
実行環境・使用するデータ
- Google Colaboratory
- Python:3.7.13
用いるデータは pandas_datareader
に含まれている Meta の株価とします。以下のようにデータを取得してみてください。
!pip install pandas_datareader --upgrade
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
from pandas_datareader.yahoo.daily import YahooDailyReader
from datetime import datetime
# 取得開始日時
date_st = datetime(2015, 10, 1)
# 取得終了日時
date_fn = datetime(2022, 6, 1)
df = YahooDailyReader('META', date_st, date_fn).read()
取得したデータを確認してみます。
df.head() # 先頭 5 行の確認
ここでそれぞれの列は以下の値を示します。
- High: 高値
- Low: 安値
- Open: 始値
- Close: 終値
- Volume: 出来高
- Adj.Close: 調整後終値
データの可視化を以下のように行うことが可能です。
df['Close'].plot(); # 終値の可視化
今後はこのデータセットを用います。
Prophet を用いた基本的な処理
まずは、Prophet を用いて、時系列の分析を行います。
Proohet は Meta が公開している時系列解析向けのライブラリで、手軽にトレンドの抽出や未来の値を予測できます。
Prophet では予測する列を y
、日付データを ds
とすることに注意して、Close を予測するモデルを作成してみます。
# ライブラリの install
!pip install pystan==2.19
!pip install fbprophet
from fbprophet import Prophet # ライブラリの読み込み
# 列名の変更
data = df.reset_index().rename(columns={'Date': 'ds', 'Close': 'y'})
# インスタンス化
model = Prophet()
# 学習
model.fit(data)
これでモデルが学習できました。それでは、30 日後の値まで予測してみましょう。
# 学習データに基づいて未来を予測
future = model.make_future_dataframe(periods=30)
forecast = model.predict(future)
この結果は通常、以下のように matplotlib
を用いて可視化します。
# 予測結果の可視化
model.plot(forecast)
plt.show()

トレンド性や周期性も同様に確認することができます。
# トレンド性と周期性の抽出
model.plot_components(forecast)
plt.show()
この可視化でも十分に効果的ですが、細かい予測の値などを把握するのに一苦労です。plotly を用いるとより詳細な情報を含んだグラフを表示することができます。
plotly を用いた可視化
plotly について
matplotlib
の plot
で出力した描画はグラフ上の特定の点に対して、細かな数字が確認できないといったデメリットがあります。
plotly を使用すれば、特定の点の数値を確認することができ、非常に便利です。
plotly は他にもさまざまな描画に対応しているので、公式サイトを確認してみてください。
plotly を用いた可視化
それでは実際にコーディングを見てみましょう。
# ライブラリのインストール
!pip install plotly
# ライブラリのインポート
from fbprophet.plot import plot_plotly
import plotly.offline as py
予測した forecast と model を引数に取ることで plotly を用いた可視化を行います。
# 描画
fig1 = plot_plotly(model, forecast)
# ノードブック上に出力
py.iplot(fig1)
出力されたグラフの黒点にカーソルを合わせると実際の値、青線にカーソルを合わせると予測した値を確認することができます。
また、下部のグラフをドラッグ&ドロップすることで表示範囲も動的に変更し、注目したい部分のみを表示することが可能です。
このように、動的で一度に様々な情報を得ることのできるグラフを作成できることが plotly の素晴らしいところです。
最後に
本記事では、時系列データの分析ライブラリである prophet
と可視化ライブラリである plotly
を紹介しました。
これらを使いこなすことでより深い分析を行うことができるためぜひ活用してみましょう!
もし忘れてしまったら本記事を思い出して再度復習してみてください。
以上、Python 学習している方々のお力添えになれば幸いです!
(本記事はキカガク長期コース卒業生に協力していただき作成しました)
参考リンク
参考 Python 3.9.2 ドキュメント 参考 Chainer チュートリアル大人気コース「Python & 機械学習入門コース」が無料!
現在 e ラーニングプラットフォーム「キカガク」に無料登録すると、これまで多くの方にご受講いただいた、Python の基礎から機械学習の数学やプログラミングまでを学べる大人気コース「Python & 機械学習入門コース」が無料です。
好評である手書きの数学とハンズオン形式のプログラミングを通じて、初学者でも数学の理論から実装まで一から学習できます。また、動画で丁寧に解説しているため、迷うことなく最後まで継続して学習しやすいです。
Python の基礎から機械学習を学習したい方は、ぜひ教材の1つとしてご利用ください!