Skip to the content.
この記事にはこんなことが書かれています。
- prophetによる時系列データの学習をしてみる
- 気象庁のデータから気温予測してみる

■環境の準備他

前回の記事を参考にして環境を構築してみましょう。
前回の記事


■データセットの用意

気象庁から月間の平均気温データを取得しました。
気象庁HP
今回は2014年1月から2021年12月までのデータを使用します。
学習データは、2014年~2016年の12×3のデータとし、2017年~2021年の傾向を予測できるか試します
圧倒的にデータ点数が足りない気がしますが、練習としてやってみます


ライブラリのインポート等は前回ソースから変更なし。学習データを分割する部分は以下。

# # 学習データとテストデータ12の分割
test_length = 36
df_train = df.iloc[:-test_length]
df_test = df.iloc[-test_length:]
# # グラフ化
fig, ax = plt.subplots()
plt.xticks(np.arange(-1, 132, 12))
ax.plot(df_train.ds, df_train.y, label="actual(train dataset)")
ax.plot(df_test.ds, df_test.y, label="actual(test dataset)")
plt.legend()

オレンジが学習データとした部分で、青が予測したいデータです。


次に、予測の部分のソースです。

# create instance
m = Prophet()

# fitting 
#m.fit(df)
m.fit(df_train)
# first create datetime of datetime
future = m.make_future_dataframe(periods=36,freq='M')
forecast = m.predict(future)
forecast

#描画
# plt.figure(figsize=(2,3))
m.plot(forecast)
plt.legend()
<br>

青線が学習結果です。黒い点が入力点になります。

それなりの精度で予測できいそうです。
以下に、二つの図を並べて正解データと比べてみました。
また、以下ソースで、prophetで予測した傾向を表示することができるようで、trendグラフも追加で表示してみました。


パラメータチューニングをしていないのにそれなりの精度で予測できていそうです。

以下、メモ。
学習結果をcsvに吐き出したいと思って調べました。以下コードでできました。1行だけで樂ですね。

forecast.to_csv("output.csv")




■今後やっていきたいこと

prophetで使う関数の数学的意味も理解しないといけないと思っています。
下記記事で紹介してくれていて、とても参考になりそうです。理解を深めていきます
数式説明

—-

Mainページに戻る