前回は学習データの準備のコードを書きました。
さて、今回は、学習データの準備が出来たので、
学習準備をします。

学習準備をすることと学習データの準備は、違います。

勉強で例えると筆記用具やノート、教科書が学習データ。
机に出して鉛筆を削り消しゴムを用意するのが、学習準備です。

まぁ、準備無しにこのまましてもいいんですが、精度が悪くなります。

この学習準備のことを標準化と言います。
データの大きい小さい数字を0~1までの範囲にまとめます。

なぜ、0から1なのか?
0~1だと、三角関数やら正規分布が使えるからです。
基準精度を上げて処理するためのものがあるんです。

じゃ、早速まとめます。

CNNのときは、Standard Scalerというのを使いました。

今回は、MinMax Scalerを使います。
Minが最小、Maxが最大という意味です。

まずは宣言します。コードの最初に追記します。
from sklearn.preprocessing import MinMaxScaler

そしてコードの続きに下記を書く。

# データスケーリング
scaler = MinMaxScaler(feature_range=(0, 1))

このscalerというのが、標準化する便利な関数です。
コードと値が、どう変わっていくかを書いていきます。



# データスケーリング
scaler = MinMaxScaler(feature_range=(0, 1))


Xsetka = X_train[:,0]


Xsetka = Xsetka.reshape(-1,1)


Scaler_train = scaler.fit(Xsetka)

ここは標準化のレベルを調査してどのくらいにするか?を調べてる。
データに変化なし。

Xsetka = Scaler_train.transform(Xsetka)

ここで、データが標準化。

Xsetka = Xsetka.reshape(-1,look_back)

元の行列に戻していく。

X_train[:,0] = Xsetka

元通り

ここまでが標準化です。
この要領で、気温の方も標準化しましょう。


全体ソースコードはこんな感じです。


import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler

#データをdfに読み込み。pandasをpdとして利用。
df = pd.read_csv("sample.csv")

# 関数の定義
def create_dataset(dataset, look_back):
 dataX, dataY = [], []
 for i in range(len(dataset)-look_back-1):
  xset, yset = [], []
  for j in range(dataset.shape[1]):
   a = dataset.iloc[i:i+look_back, j]
   xset.append(a)
  yset.append(dataset.iloc[i+look_back, 0])
  yset.append(dataset.iloc[i+look_back, 1])

  dataY.append(yset)
  dataX.append(xset)
 return np.array(dataX), np.array(dataY)


#日付の型に変換
df['datadate'] = pd.to_datetime(df['datadate'])

#インデックス指定
df.set_index('datadate', inplace=True)

look_back = 3

X_train, y_train = create_dataset(df, look_back)


# データスケーリング
scaler = MinMaxScaler(feature_range=(0, 1))
Xsetka = X_train[:,0]
Xsetka = Xsetka.reshape(-1,1)
Scaler_train = scaler.fit(Xsetka)
Xsetka = Scaler_train.transform(Xsetka)
Xsetka = Xsetka.reshape(-1,look_back)
X_train[:,0] = Xsetka

#気温の標準化
Kion_scaler = MinMaxScaler(feature_range=(0, 1))
Xsetka = X_train[:,1]
Xsetka = Xsetka.reshape(-1,1)
Kion_Scaler_train = Kion_scaler.fit(Xsetka)
Xsetka = Kion_Scaler_train.transform(Xsetka)
Xsetka = Xsetka.reshape(-1,look_back)
X_train[:,1] = Xsetka



昨日のコードと合わせて書くとこうです。

次は、モデル作成と学習です。