mochieee
8/8/2019 - 12:41 PM

prophet quick run

# prophetを使った時系列分析のクイックスタート
"""
prophetの特徴
- 時系列データのトレンド抽出 + トレンドの変化点の検出
- トレンド + 季節(周期性) + 祝日などのイレギュラー成分を足して曲線(いつもの)を作り、
  最もフィットする曲線を見つける

- 前提
 jupyter containerの場合は以下のコマンドでprophetをインストール
 `!conda install -c conda-forge fbprophet --force --yes`
"""

import pandas as pd
import numpy as np
from fbprophet import Prophet
import matplotlib.pyplot as plt
%matplotlib inline

# warningが邪魔なので無視する
import warnings
warnings.filterwarnings('ignore')

###########

df = pd.read_csv("/path/to/file")

# 入力データを整形する
df["time_property"] = pd.to_datetime(df["time_property"])
_df = df.groupby("time_property").count()[["A"]].rename(columns={"A":"count"})
df_input = _df.reset_index().rename(columns={'index':'ds', 'count':'y'})
df_input["cap"] = 10000 #max
# df_input["floor"] = 0 #min

# 成長を予測する場合はロジスティック解析を使うっぽい
model = Prophet(growth='logistic')
model.fit(df_input)
future = model.make_future_dataframe(periods=365) # periodsに予測したい期間
future["cap"] = 10000 #max
# future["floor"] = 0 #min 
forecast = model.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()

# 予測値の可視化
model.plot(forecast)
plt.show()