日次の気象データから電力消費量を予測するモデルができる

日次の気象データから電力消費量と各種スクリプト

GitHub - og3/denkiyohou: 日次の気象情報から電気消費量を予測するモデル
日次の気象情報から電気消費量を予測するモデル. Contribute to og3/denkiyohou development by creating an account on GitHub.

日次の気象データから電力消費量を予測するモデルができる

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error, r2_score
import numpy as np
import pandas as pd
import joblib


# CSVの読み込み
df = pd.read_csv("daily_weather_and_power_consumption.csv")


# 数値に変換(エラーはNaNとして処理)
for col in df.columns:
    if col != "date":
        df[col] = pd.to_numeric(df[col], errors="coerce")


# 欠損値を0で穴埋め
df_filled = df.fillna(0)


# 特徴量と目的変数に分割
X = df_filled.drop(columns=["date", "power_consumption(kWh)"])
y = df_filled["power_consumption(kWh)"]


# 学習データとテストデータに分割(8:2)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)


# ランダムフォレストによる学習と予測
model = RandomForestRegressor(random_state=42)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)


# モデル評価
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
r2 = r2_score(y_test, y_pred)


print("RMSE:", rmse)
print("R²:", r2)


# モデルの保存
joblib.dump(model, "power_predictor_model.joblib")
print("modelを保存しました")
$ python predict_power_consumption.py
RMSE: 2.7310133760199715
R²: 0.4127938362704643

RMSE(Root Mean Squared Error)とR²(決定係数)の見方

RMSE(Root Mean Squared Error)=約2.73

  • 予測と実際の差(誤差)の大きさを平均的にどれくらいかを表す指標です。

  • ここでは「1日あたりの電力消費量(kWh)」の誤差が平均して2.73kWhくらいあるという意味です。

  • 数値が小さいほど良いモデルですが、「どのくらい許容できる誤差か」は用途によります。

    • たとえば1日50kWh使う家庭なら2.7kWhは「まあまあ当たってる」

    • 逆に5kWhしか使わない家庭だと「だいぶズレてる」感じです。

R²(決定係数)=約0.41

  • モデルがどの程度「傾向」をつかめているかを表す指標で、0〜1の間の値になります。

    • 1に近い → ほぼ完璧に説明できている

    • 0に近い → 平均値で予測するのと変わらない

  • 今回の 0.41 という値は、「気温や湿度などの特徴量で、電力使用量の約41%の変動を説明できている」という意味です。

  • まだ精度としては中程度以下ですが、機械学習ではこれくらいから改善を繰り返していくのが普通です。

 予測精度は7割くらいを目指しているので、これから「モデルのチューニング」をする必要がある。

もっと精度を上げるには

 こんなのがあるらしい。

  • 外れ値の扱いを工夫する

  • 特徴量を増やす(例:前日比・祝日フラグなど)

  • モデルを変える(XGBoostなど)

 

コメント