#1.はじめに
最近簡単に時系列予測をするために、Prophetを使ってみた。
せっかくなので導入から動かすところまでを共有しようと思い、記事にしました。
- 動作環境
- OS : Windows10
- Python : 3.8.3 // Miniconda 4.9.1
- Visual Studio Community : 2019
#2.Prophetって何?
Prophetはfacebook社がOSS(MITライセンス)として公開している時系列の予測パッケージ。
細かい理論に関してはここで触れないが、一般化加法モデルを用いて予測が行われている。
#3.検証用に仮想環境を作成、仮想環境に切り替え
#prophet_envという仮想環境をpython3.7系で作成(3.8系だとfbprophet 0.6に非対応)
conda create -n prophet_env python=3.7
#base環境から作成したprophet_env仮想環境に切り替える
conda activate prophet_env
#4.導入~動作確認
まずは、Visual Stuido Communityをインストールしておく。
※C++ Compilerが必要になる
Visual Studio Code のサイト
その上で以下ライブラリを導入する
#ProphetはPyStanに依存している為に導入
conda install plotly -y
#fbprophetを導入(2020/11/1時点のバージョンは0.7.1だったがエラーが出たので0.6)
conda install -c conda-forge fbprophet==0.6
#環境がminicondaなので・・(numpyやpandasは↑でたまたま一緒に導入されたので個別には入れなかった)
conda install matplotlib
下記コマンドでエラーが出なければ導入成功
from fbprophet import Prophet
#5.実際に使ってみる
今回はサンプルデータセットとしてシンプルな「AirPassengers」というデータセットを使用する
Monthカラムに時系列部分、Passengersカラムに飛行機乗客数の推移が入っている。
データセットのリンク
Month | #Passengers |
---|---|
1949/1/1 | 112 |
1949/2/1 | 118 |
1949/3/1 | 132 |
5-1:ファイル読み込みまで
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from fbprophet import Prophet
#AirPassengersのcsvを読み取る
df = pd.read_csv('AirPassengers.csv')
5-2:Prophetを学習
#Prophetではカラム名をdsとyに変更する必要があるので変更する
df.columns = ['ds', 'y']
#今回はProphetにデータフレーム後ろから10番目までを学習(fit)させる
m = Prophet()
m.fit(df[:-10])
5-3:Prophetで予測
'''
periods=10:10マス分予測させる
freq='M':単位は「Month」
→つまり10か月分予測させるという意味
'''
future = m.make_future_dataframe(periods=10, freq='M')
forecast = m.predict(future)
#forecastの結果を図示する
fig = m.plot(forecast)
#6.最後に
どうだっただろうか?
プログラム自体は簡単に動作するので、むしろ導入のほうが手こずるかもしれない。
バージョンが違ったりするとどこかでエラーになるかもしれないし、実際私も最初はそこで躓いた。
(PyStan、libpython等はfbprophet==0.6で一緒に導入されたので最終的には個別では導入しなかった)
お手軽なのでぜひ試してみてほしい。