日次の気象データから電力消費量と各種スクリプト
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など)
コメント