Metaの時系列解析ライブラリ、Prophetを試してみました。
当初は、M1 MacBook Proで動かしたかったのですが、prophetライブラリのインストールはできても、エラーが発生して動かすことができませんでした。
そこで、試しに、intel MacBook Proが手元にあったので、動くか試してみたところ、動きました。ちなみに、スペックは以下の通りです。
- MacBook Pro 2017 13-inch
- プロセッサ:3.1 GHz デュアルコアIntel Core i5
- メモリ:8GB
- SSD :256GB
なので、どうやらM1 Macとの相性が良くないようです。
仮想環境の作成
いつもの通り、仮想環境を作成します。
prophetを動かすためには、pythonは3.8以下じゃないとダメとか、いろいろ書いている人がいますが、最新の3.11でも動きました。
$conda create -n prophet-env python=3.11
作成したら、アクティベートします。
$conda activate prophet-env
ライブラリのインストール
データ分析、機械学習に必要なライブラリを一式入れます。
$conda install pandas pandas-datareader numpy Jupyter matplotlib plotly
次にprophetをインストールします。Minicondaですが、condaでインストールできます。
$conda install prophet
Jupyter Labを立ち上げる
Jupyter Labを立ち上げます。今まではJupyter Notobookを使用していましたが、すでに開発が終了し、後継のJupyter Labに移っているので、こちらを使うようにしています。Jupyter Labの方が便利ですね。
$jupyter lab
Metaのサイトのサンプルファイルを動かしてみる
とりあえず、きちんとコードが動くか、確かめてみます。Metaの公式ガイドに載っているコードをJupyter Labで動かしてみます。
import pandas as pd
from prophet import Prophet
df = pd.read_csv('https://raw.githubusercontent.com/facebook/prophet/main/examples/example_wp_log_peyton_manning.csv')
df.head()
df.tail()
pandasでデータを読み込みます。中身はPeyton Manningという人のWikipediaの日次のページビューの時系列データです。先頭と末尾の5行分だけを表示して、どのようなデータ、データ数かを表示しています。
ちなみに、prophetへのデータの入力は、必ず、時間軸のdsと値yとしなければなりません。
prophetにデータフレームを渡して学習させます。
m = Prophet()
m.fit(df)
future = m.make_future_dataframe(periods=365)
forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
結果を表示してみましょう。prophetにはすでに可視化のためのメソッドが用意されています。
fig1 = m.plot(forecast)
成分ごとにみたい時には、以下のコマンドを実行します。デフォルトでは、年間、週間、月次の季節性について見ることができます。
fig2 = m.plot_components(forecast)