【Python】時系列データを用いてビットコイン価格を予測する【Prophet】

Python
この記事は約3分で読めます。

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)

ビットコイン価格データのダウンロード

仮想通貨(暗号通貨)4本値CSVゲッター from Cryptowatch

こちらのサイトより、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は予測精度の評価が実装されておらず、どれくらいの精度かは分析者が判断する必要があります。ビットコインなどの仮想通貨は値動きが激しいため要注意です。

タイトルとURLをコピーしました