Pythonと数学と音楽とetcの落書き帳

かなりテキトーに、断片的に離散的にプログラミングや、音楽やいろいろなことを書いていく。洋楽のレビューのついでにPythonその他のブログや本のノート、備忘録を書いていきます。

時系列データをKerasLSTMでモデル作りたい時の教師ありデータの作り方。とその他

こんにちは。

 Generalな内容を書きすぎていたので、もう少し、とりとめのないプログラミングのテクニック的なことを書こうと思います。

Kerasを使ってDeeplearningの勉強をしているのでそんな感じで

 

土日の誰もいないバイト先で洋楽を口ずさみながらPythonのコードをいじったりするのが好きです。

 

今聴いてて感動したのは、ZeddのCandy manと

Zedd, Aloe Blacc - Candyman


Zedd, Aloe Blacc - Candyman

Aloe Blaccさんはほとんど知らないのですが、

John legendと似ているブルース調の声で、Zedd音楽と一緒でなんとも聞き心地の良い音楽です。

すいません音楽はたしなみ始めたのが大学からなので、とても稚拙な感想しか述べられませんが、磨いていこうと思います。

 

もう一曲エンドレスリピートしてたのはThe chemical brothersのLet Forever Be

The Chemical Brothers - Let Forever Be
でした


The Chemical Brothers - Let Forever Be

どっかで聴いたことあるっていう人も多いハズ

T

 

洋楽ってYouTubeにフルで落ちてるからよいですね。

 

さて、このThe Chemical Brothersにハマったきっかけは、最近流行りの落合陽一さんが子供に聴かせているとお聞きしたからであります。

 

最近落合陽一さんへのリスペクトが止まらなく、論理的に自分が憧れる理由も説明できないのですが、落合さんの発言に生活スタイルを左右させられています。

 


落合 陽一氏の父と子育て論

 

落合さんは、情熱大陸きっかけで最近一般の人々への認知が爆発したようです。

僕が落合さんにここまで惹かれる理由の一つはおそらく、Academicな世界で結果を残し、Famousな人間になってもそこで甘んじることなく、

自信の健康を顧みずに研究に命を燃やしているところです。

 

僕もせっかく生まれたからには、何か自分の名前が歴史に残るようなことを成し遂げたいという思いは昔からあるのですが、こういう人を見ていると、僕のそこへ向かうスピードの遅さがなんとも悔しくなり、刺激をとても受けます。

 

是非Live picksの動画、Youtubeに全て落ちているので、聴いてほしいです。

Wifi環境下でClipboxなどで保存して、おうちでゆっくりとメモをしながら聴いてみてください。

 

さて、以外と書いてみたら最近書くことあるなとか、毎日洋楽レビューしてことか考えながら、今日勉強したことを書きます。

 

前回のブログにも書きましたが、最近ひきこもりなので、コードやいろいろ公開する機械を増やそうという魂胆です。

僕の勉強はPythonが中心なので、Jupyter NotebookというPython用の入門エディタみたいので、マークダウンにがっつり解釈書きながらブログとかガジガジかじっていきます。

 

GitのPushとかCommitの練習にもなるね!!

 

落合陽一さんのサーベイを応用して、僕はまだ論文読めるレベルではないので、Qiitaをとにかく100個読んで見ようかなと考えています。

せっかくの春休みなので。

 

なんかレギュレーションをきつくすると、挫折して、逃げちゃうと思うので、

 

できるだけ毎日洋楽のレビューと、(プログラミングじゃないですね)、勉強した内容と、サンプルコード一つくらいは、載せていきたいですね。

 

勉強の話に入ります。

Multivariate Time Series Forecasting with LSTMs in Keras - Machine Learning Mastery
machinelearningmastery.com


外国の方の機械学習のブログです。中国の大気汚染を、LSTMという時系列データ読み込んで、何ステップか先の実数連続値を予測する手法でPredictしようという趣旨です。
実はこのブログは、だいぶ前に僕のアルバイトの方で触れる機会があって、その際に大学のお仲間4人と一緒に読みました。
が、応用をする際にもほとんどコピペでフランケンシュタイン状態なので、同じ方のもう少し入門的な記事を、この春休みにできれば全て読もうと試みています。



今回は、

How to Convert a Time Series to a Supervised Learning Problem in Python - Machine Learning Mastery
machinelearningmastery.com


さっきの大気汚染予測ブログの中のコードでも使われている、生の時系列CSVデータから、PythonのDeeplearningライブラリで親切で入門的と名高いKerasに渡す用の教師ありデータを作る関数を定義するところから初めます

 

コードを埋め込み、日本語の解説をつけます。
一回記事Publishしてしまってはてな記法にできなくてさっそくハマった。

ほとんどそのまま引用してしまうから参考とは言い難いかもしれません。

少しずつオリジナリティを出したコードを公開していきたいですね。
Pandasの基本のShift関数を使って教師付きデータを作ります。
まず普通にDataFrameを定義して、Shiftさせるところから

from pandas import DataFrame
df = DataFrame()
df['t'] = [x for x in range(10)]
df['t-1'] = df['t'].shift(1)
df['t+1'] = df['t'].shift(-1)#Shiftすると、Float型になる。無いデータはNaNになる
print(df)

#   t  t-1  t+1
#0  0  NaN  1.0
#1  1  0.0  2.0
#2  2  1.0  3.0
#3  3  2.0  4.0
#4  4  3.0  5.0
#5  5  4.0  6.0
#6  6  5.0  7.0
#7  7  6.0  8.0
#8  8  7.0  9.0
#9  9  8.0  NaN

0~9までの整数データフレーム作って、前と後ろに一つずつずらしました。
これ使うと、横の一行に、t-n,,,,t-1,t,t+1,,,,,t+nとシフトさせてマルチステップの時系列教師ありデータが作れます。

あとは、ブログに乗ってるSereis to supervised(教師あり)
関数を参照していただけたらわかりますが、
Inputとして何ステップ前を取るか、Outputで何ステップ先まで予測するかも任意に選べるのでとても汎用性が高く、便利な関数をブログに乗せてくれています。
PandasとKerasの入門にぴったりだね!
どこまで引用していいのかわからないんですが、とりあえずこんな感じで、ざくざくざっくり読み進めていきます。
Githubにはどんどんこんな感じのipynbファイルを積み上げていきます。