あるケミストの独り言(winchemwinの日記)

ケミスト(化学者)の視点で、面白そうな情報(シミュレーション関係など)を発信

機械学習による予測モデル作成(我が家の電気使用量 その1-1)

 様々なデータの解析に機械学習の手法が取り入れられてきています。python機械学習のライブラリが比較的充実していますので、今回から機械学習によるいくつかのデータの予測モデル作成と検証についての内容を書いてゆきたいと思っています。

 まずは、我が家の電気使用量について行ってみました。我が家は関西電力さんと契約をしているのですが、関西電力さんの「はぴeみる電」のホームページから各自日々の電気使用量をダウンロートできます。そのデータのうち電気使用量を目的変数として、説明変数との関係について機械学習のモデルの作成を検討しました。

 説明変数ですが、なかなか関係が深そうなデータで系統的に集積されているものはないのですが、今回は気象庁で公開されている日々の気象情報との関係について、機械学習で整理できないか検討してみました。気温や湿度はエアコンなどの使用量と関係するので、それなりの相関関係があるのではないかと期待した訳です。

 

 以下はそのコードですが、まずはデータの読み込みと前処理です。それぞれのデータですが、電気使用量は、1ヶ月単位で「はぴeみる電」のホームページからダウンロードできます。

データの読み込みと前処理

 

データは毎日、毎時間の使用量と簡単な気象情報からなっていますが、今回は毎日の電気使用量を目的変数として設定することにしました。データは1ヶ月ごとのデータなので、年間のデータとして予め1年間分のデータをダウンロードして、

集約したファイルを「Year2020_EV.csv」としてエクセルで編集しています。Pandas のデータフレームとしてデータを読みこんでいますが、カラム名が割当られていないのでそれぞれのカラム名を df.renameでわかりやすい名前に割り当てています。

 元のデータの日付ですが、”4/1”のように年のデータが含まれ

ていないので’2020/’を加えた上でpd.to_datatime で日時データに変換しています。また電気使用量はウィークデイと週末とで大きく異なるので、曜日による分類ができるようdt.strftimeで曜日情報を取得した上で、新たにDay/Weekとしてデータフレームに列を追加しています。以上で電気使用量データの前処理は終了です。

 続いて気象データです。気象データも各地の気温、風速、気圧、湿度などがダウンロードできますが、一度にすべてのデータをダウンロードできるわけではないのでそれぞれの個別にダウンロードしたものをエクセルで集約、編集しています。気象データも毎日、毎時間のデータがありますが、今回は毎日のデータを説明変数として利用しています。

 加工した気象データ(Weather2020.csv)はPandas のデータフレームとして読み込んでいます。ここで、電気使用量データと気象データの日

付の並びが異なるので、気象データの方の順番をdf.iloc[::-1]で逆に並び替えて、電気使用量データをあわせる作業を行っています。続いて電気使用量と関係しそうな必要データを取り出して、気象データの前処理作業は終了です。

 最後に電気使用量データと気象データを統合して、機械学習用データ(dfsum)としています。また電気使用量ですが、ウィークデイと週末では大きく異なるので、それぞれ分けて機械学習モデルの作成を行うため、データを分割しています。

  

 以上、説明が長くなりましたが、電気使用量のデータ、気象データの読み込みと前処理までの説明でした。

 次回以降、sklearn による機械学習の実施と検証について紹介したいと思います。