PythonのライブラリProphetを利用すると、時系列データから未来の予測ができます。
今回はコードを実行しながら、ビットコインの価格を予測してみましょう。
コードの準備
import pandas as pd
import matplotlib.pyplot as plt
from fbprophet import Prophet
df = pd.read_csv('btc.csv', names=('ds', '始値', '高値', '安値', 'y', '出来高'))
df.drop(['始値', '高値', '安値', '出来高'], axis=1, inplace = True)
df.plot(x = df.columns[0], figsize = (15, 8))
m = Prophet()
m.fit(df)
future = m.make_future_dataframe(periods=365)
forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
fig1 = m.plot(forecast)
fig2 = m.plot_components(forecast)
ビットコイン価格データのダウンロード
こちらのサイトより、csv出力からcsvを出力して利用します。

コードの説明
ライブラリのインポート
import pandas as pd
import matplotlib.pyplot as plt
from fbprophet import Prophet
ライブラリのインポートです。
pandasはcsvをデータフレームとして利用するために読み込みます。
matplotlib.pyplotはグラフを描くために利用します。
fbprophetは今回のテーマである時系列データから価格予測をするためのライブラリです。
コンソールからpip install fbprophet
でProphetを利用できるようにしておきます。
Anacondaを利用している場合は conda install -c conda-forge fbprophet
でインストールします。
csvのインポートとグラフ出力
df = pd.read_csv(‘btc.csv’, names=(‘ds’, ‘始値’, ‘高値’, ‘安値’, ‘y’, ‘出来高’))
df.drop([‘始値’, ‘高値’, ‘安値’, ‘出来高’], axis=1, inplace = True)
df.plot(x = df.columns[0], figsize = (15, 8))
日時のデータ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()
fig1 = m.plot(forecast)
fig2 = m.plot_components(forecast)
成果物


画像2は、水色のゾーンが価格予測帯を表していますが、
トレンドを加味する、季節性、イベントを設定することで精度が上昇します。
Prophetは予測精度の評価が実装されておらず、どれくらいの精度かは分析者が判断する必要があります。ビットコインなどの仮想通貨は値動きが激しいため要注意です。