こんにちは
テービーテックの村松です
現在のDSIT豊田校3期は時系列データを取り扱っている最中です
講義内であまりにも簡単に未来予測をするライブラリを教わったので今回はそちらをご紹介
Prophet
「Prophet」はFacebookが提供している機械学習ライブラリで簡単にそれっぽい時系列解析ができます
PythonとRに対応しているそうです
今回はPythonで進めていきます
今回の目標
今回は講義で紹介されたProphetを使って豊田市の3月の日別の平均気温を予測してみようと思います
準備
データセットの作成
「気象庁|過去の気象データ・ダウンロード」から豊田市の過去10年分のデータ拝借
【余談】大学生時代に気象庁とe-Statの統計データには度々お世話になった思い出があるのですが、卒業したら二度とまみえることはなかろうと思っていました。思わぬ再会に地味に感動しております。
【手順】
①まずは地点を選びます
②今回は愛知県の
③豊田市を選択
④次に項目を選びます
⑤⑥今回は「日別値」の「平均気温」「最高気温」「最低気温」「降水量」「日照時間」を選んでみました
⑦次はダウンロードする期間を選択します(2010-01-01~2020-02-29)
⑧一回にダウンロードできるデータ量には上限がありますので注意
⑨⑩今回は5年ごと2回に分けてダウンロードしました
読み込んだデータを全てくっつけて、
いらないところを削除して、
出来上がりましたデータがこちら(上部10件を表示しています)
Prophetではdatetimeのカラム名を「ds」、
分析したい数値を「y」とするお決まりごとがあるので変換しておきました
今回の「y」は「平均気温」です
ぶっちゃけ実装するよりもcsvファイルを読み込むことに一番手間取りました・・・
書き出すと長くなるので次回に回します
まずはサクッと結果を出してみましょう
Prophet実装
では、出来上がったデータをProphetに突っ込んでみましょう
#モジュールのインポート from fbprophet import Prophet #モデルの構築 model = Prophet() #学習 model.fit(df)
めちゃくちゃシンプル・・・
細かい調整などは限界があるそうですが、今回はまずデフォルトで行きます
学習したデータは2010年1月1日から2020年2月29日まで
ここから今月の平均気温を予測します
#3月分を予測 future = model.make_future_dataframe(periods=31) forecast = model.predict(future)
結果
それでは結果をプロットしてみましょう
model.plot(forecast);
・・・うーん
今年の冬がとても暖かかったことはよくわかりますね
しかし3月の予測が10年分表示されると埋もれてわかりづらいので、直近1年分くらいに変えましょう
model.plot(forecast) plt.xlim(future.ds.iloc[-365-90], future.ds.iloc[-1]);
黒い点:実測点
青い線:予測値
薄い青の範囲:80%信頼区間
となっております
黒い点が途切れた以降が3月の予測ですね
ふむ、それっぽく出てますね
昨年より出だしが高めなのでそのまま高く上がっていっている感じですが・・・
・・・
やっぱり3月の予測よりも、今冬の暖かさに目が行ってしまう・・・
うん、暖冬でしたね、ということで
周期性とトレンドも確認できます
model.plot_components(forecast);
以上、とっても簡単なProphet実装でした
お手軽でしたね
折角予測をしたので3月の終わりにでも答え合わせをしてみましょうかね
忘れていなければ・・・
では、本日はここまで