Pythonの時系列予測ライブラリである「Prophet」をWindows環境でAnacondaを使わずにインストールする方法を紹介します。
ProphetはPystanを利用するため、Anaconda環境やLinux環境でのセットアップの方が簡単であり多く解説されています。
そんな中で、Windows環境で悪戦苦闘しながらインストールした方法を紹介します。
セットアップ環境はこちらです。
- Windows 10 (64bit)
- Python:3.8.10
Pythonのインストール
まずはPythonのインストールをします。
こちらに手順については、すでに多く解説されているので割愛します。
Pythonの公式ホームページから3.8.10をダウンロードすることをおすすめします。

C++ コンパイラのインストール
次に、Prophetで使用するベイズ推論を行うためのライブラリStanが動作可能とするためにC++のコンパイラのインストールと設定を行います。
Visual Studio Build Tools 2022のインストール
次にダウンロードしたファイル「vs_Buildtools.exe」を実行します。
ポップアップが出てきますが続行します。
下記の画面では「C++によるデスクトップ開発」を選択してインストールします。

下記画面で100%になればインストール完了です。

環境変数の設定
次にインストールしたC++コンパイラの実行ファイル「cl.exe」にパスを設定します。
環境変数設定をすることでコマンドプロンプトやPowershellからcl
と入力することでファイルを実行できるようになります。
まず、Windowsの検索画面で「環境変数を編集」と検索して下記の画面を開いてください。(またはコントロールパネル -> システム -> システムの詳細設定 -> 環境変数と進んでください。)
ここでPathを選択して編集をクリックします。
新規をクリックして下記のファイルパスを設定してください。cl.exeを違う場所に保存した方はそちらのファイルパスを設定ください。
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.36.32532\bin\HostX64\x64
以上で環境変数の設定は完了です。
動作確認
正しく環境変数が設定されているか確認します。
コマンドプロンプトでclと入力してEnterを押します。下記のように使い方がでればOKです。

NGの場合はファイルパスの確認または再起動してみてください。
Prophetのインストール
最後にProphetとそれに必要なPythonライブラリをインストールしていきます。
pystan/cmdstanpyのインストール
まずはpystan または cmdstanpyをインストールします。
私はpystanのインストールがうまく行かなかったためcmdstanpyをインストールしました。どちらか一方がインストールできていればProphetは動作しますのでどちらか一方をインストールしていただければOKです。
pystanの場合
下記を実行して、cythonとnumpyをインストールしたあとにpystanをインストールしてください。
pip install cython numpy
pip install pystan==2.17.1.0
cmdstanpyの場合
下記を実行してcmdstanpyをインストールします。
pip install cmdstanpy
ちなみに私のVerは1.2.5でしたので、同じバージョンの場合はこちらを実行してください。
pip install cmdstanpy==1.2.5
prophetのインストール
最後にProphetをインストールします。
下記を実行してださい。
pip install prophet
ちなみに私のVerは1.1.6でしたので、同じバージョンの場合はこちらを実行してください。
pip install prophet==1.1.6
以上でProphetのインストールは完了です。お疲れ様でした。
Prophetの動作確認
最後にProphetが動作するか確認してみます。
動作確認用ライブラリのインストール
まずProphetの動作確認用のデータとグラフを準備するために下記の2つのライブラリをインストールしてください。
pip install pandas numpy matplotlib
テスト用スクリプト
準備が整ったら下記のスクリプトを実行してみてください。
import pandas as pd
import numpy as np
from prophet import Prophet
import matplotlib.pyplot as plt
# ランダムなサンプルデータを生成
np.random.seed(42) # 再現性のために乱数シードを設定
date_range = pd.date_range(start="2023-01-01", end="2023-12-31", freq="D")
data = {
"ds": date_range,
"y": np.random.normal(loc=100, scale=10, size=len(date_range)) + np.sin(np.linspace(0, 3.14 * 2, len(date_range))) * 20
}
df = pd.DataFrame(data)
# Prophetモデルの作成とフィッティング
model = Prophet()
model.fit(df)
# 未来のデータフレームを作成
future = model.make_future_dataframe(periods=30) # 30日間の予測
forecast = model.predict(future)
# 結果をプロット
fig = model.plot(forecast)
plt.title("Prophet Forecast")
plt.show()
# 予測結果の一部を表示
print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail())
下図のように結果がでれば正しく動作しています。

コメント