Google スプレッドシートでBigQueryMLの機械学習結果を参照する
以前、Dataprep→BigQuery→BigQueryML→DataPortalと連携し機械学習を行い、参照する記事を掲載しました。
・DataprepでCloud Storage→BigQueryへデータをクレンジングして格納する
・BigQueryMLで太陽光発電量を予測して、DataPortalに表示する
最近、GoogleのスプレッドシートにBigQueryの検索結果をアウトプットできるようになりました。
・コネクテッド シートの使用
これにより、スプレッドシートで手軽に機械学習結果を参照でき、非常に便利な機能ですので、ご紹介いたします。
太陽光の発電電力量を予測する
詳細は以前の記事にありますが、
気象予報データと発電実績データを元に機械学習を行い、未来の太陽光発電電力量を予測します。
データモデルの作成までは以前の記事をご参照ください。
入力情報は以下を使います。
・過去気象予報データ(KCCS API)
・発電実績データ(弊社社員の家より)
モデルとデータ
以前の記事で作った、モデルとデータにアクセスします。
スプレッドシートでBigQueryMLにアクセスします。
スプレッドシートを開き「BigQueryに接続」を選択します。
前述したデータにアクセスするためのSQLを記載します。
説明変数:日射量
目的変数:発電電力量
学習データ:5月~7月末のデータ
テストデータ:8月のデータ
となりますので、SQLは以下になります。
with weather as (
select
weather_forecast.Insolation as insolation, --説明変数:日射量
weather_forecast.timestamp -- 時間
from
`qiita.WEATHER_FORECAST_RESULT` weather_forecast
where
weather_forecast.timestamp between cast('2021-08-01' as date) and cast('2021-08-31' as date) -- 範囲を指定
),
pv_forecast as (
Select timestamp, sum(kwh) as sum_kwh from -- 学習結果の評価用に、実際の発電電力量を取得
`qiita.PV_FORECAST`
group by timestamp
)
select predicted_sum_kwh, sum_kwh, insolation, a.timestamp from
ml.predict(model `qiita.pv_forecast_model`, table weather) a
INNER JOIN pv_forecast b
ON a.timestamp = b.timestamp
order by a.timestamp
設定が完了すると、
作ったモデルで予測結果が表示されます。
そのままだと、参照用のシートとなり、スプレッドシートとして使えないため、「抽出」ボタンを押し、データをシートに出力します。
※BigQueryのデータはそのまま扱えません。
スプレッドシートとして使ってみる
グラフにしてみる
グラフにしたい場合は、元の参照用シートで「グラフを作成」で「新しいシート」で「作成」します。
グラフのパラメータを指定すれば、DataPortalのようなグラフの表示も可能になります。
以下のグラフでは、
predicted_sum_kwh=予測した発電電力量
sum_kwh=実際の発電電力量
になります。
スプレッドシートで機械学習結果も参照できるようになると、ほぼ誰でも扱う事ができるようになります。
非常に便利かと思いますので、ご興味のある方は使ってみてください。