さて、学習です。

ここのコードを参考にしています。↓
TensorFlowで電力使用量予測 with Keras - Qiita


x_cols = ["TEMP_okym","TEMP_hrsm"] + df.columns.tolist()[14:]

X = df[x_cols]
y = df["MW"]

# ラベル付きデータをトレーニングセット (X_train, y_train)とテストセット (X_test,y_test)に分割
from sklearn import model_selection

X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=.2, random_state=42)


前回まで、学習する準備をしています。


ここからが、学習に入るわけです。



最初の行
x_cols = ["TEMP_okym","TEMP_hrsm"] + df.columns.tolist()[14:]

ここでの作業は、Xのカラム設定です。


これをやると x_colsは、こうなります。↓

['TEMP_okym', 'TEMP_hrsm', 'MONTH_1', 'MONTH_2', 'MONTH_3', 'MONTH_4', 'MONTH_5', 'MONTH_6', 'MONTH_7', 'MONTH_8', 'MONTH_9', 'MONTH_10', 'MONTH_11', 'MONTH_12', 'WEEK_0', 'WEEK_1', 'WEEK_2', 'WEEK_3', 'WEEK_4', 'WEEK_5', 'WEEK_6', 'HOUR_0']

カラムだけですね。


最初の['TEMP_okym', 'TEMP_hrsm']の2個は、さきほどの命令文の最初に手動で加えたもの。あとの残りは、dfの14個目以降のものと同じです。


電気予測なのに、電気のカラムが無い・・・・。


それは次の行と一緒に説明。



X = df[x_cols]
y = df["MW"]


これの意味は、


「Xにさっき作ったカラムと同じ名前のカラムのところのデータをXに入れなさい。」
「Yには、求めたいMWのデータをYに入れなさい」


となっている。求めたいデータがすでにある??


ではなくdfのデータ。つまり過去のデータです。これをもとに学習する。


Tensorflowでは、グラフのYを予測で求める。


つまり、


[Xの元でYの数字はいくつか?]というのを機械学習で答え出す


というのが人工知能。


例えば、y = 2x + 20とかいう式があった場合、x = 10のとき、yはいくつか?。


この場合は、y=40と計算したら出る。



しかし、Tensorflowの場合は、このy = 2x + 20 という式も計算して式を出す、さらに、その式から、yを求める。


なので、ここで、重要なのは、Xには、仮定。Yには欲しい答えを入れる。




この段階で、Xとyの中身はこう↓

Xの中身


yの中身



じゃあ、yは、なんでもいいのか? それはノー!


過去データが無いとダメ。


次の行と合わせて解説する。

from sklearn import model_selection

X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=.2, random_state=42)


上のfrom sklearnのところから全部ワンセット。


これは、さっきまとめたXとyをテストデータ、トレーニングデータに分ける。


test_sizeというところに.2とあるのは、0.2のことで


20%をテストデータにするよという意味。


つまりdfの80%のデータで学習して数式を出す。



そして、その数式に20%のデータで、合ってるか、どうかを判断する。


一旦、ここまで。