ビットコイン予測がうまくいかなかったので、整理がてら気温予測編の解説をしていくで

やっぱり失敗したんだね


【準備データ】
15年分(180か月の平均気温データを準備)

(1)気温データを読み込む

【解説】
・pandasをimportしてpdとライブラリ名を付与
・pandasでCSVを読み込み、変数に入れる

【補足】
・dfの型は、<class 'pandas.core.frame.DataFrame'>というデータフレーム型
・CSVファイルの文字コードが、ansiだったので、encoding="cp932"と、指定する。
・df.shapeをとると、(180,2)となり180行2列の行列となる。
・read_csvはデフォルトでは、先頭行をヘッダーとして考慮して2行目から読み込むため、dfのデータににヘッダーは入らない。ヘッダーなしcsvの場合は、header=Noneオプションを指定して取り込む

(2)気温データの階差をとり、入力データとラベルデータに分ける


【解説】
・numpyをimportしてnpとライブラリ名を付与
・df.iloc[:,1:].valuesで全行、1列目の値を取得し、気温データの全データを変数seriesに入れる
・series[1:]からseries[:-1]を引き、階差をとる。
・階差データのうち、diffed[:-1]が入力データ、diffed[1:]がラベルデータになる

【補足】
・seriesの型は、<class 'numpy.ndarray'>という型,series.shapeは(180,1)
 ->なお、df.iloc[:,1].valuesとすると(180,)の1次元配列になる。

・T=1~180とすると、階差D=T-(T-1)で取得するため、series[1:]-series[:-1]としている。なお、スライス表現の場合0スタートなので、series[1:] -> T= 2~180、series[:-1] -> T=1~179となる。

・LSTMにおける入力データをtとすると、ラベルデータはt+1となるので、入力データは、階差データのdiffed[:-1],ラベルデータは、diffed[1:]となる。

・階差データは、時系列データのトレンドを除外し、値の増減で表現するために用いられる。
 (ビットコイン予測でトレンドを考慮したいなら、階差はとるべきではない?)

なおスライス操作については、以下のqiitaの記事がわかりやすい


今回はここまで