俺にも執筆活動させろボケ

逃亡生活(ボート)part8

取れたには取れたが当地勝率と実際問題かぶっていて、

これを入れるのはどうかという考えが出てきたのでスルーしておく。

年齢・体重まできたので平均STと全国と当地の勝率二連率三連率。

そしてモーターとボート、チルト。

FとLは一回入れずに回してみる。

特徴量のndarrayとラベルのndarrayが出来上がった。

ここまでクソ長かった、まあ主に不勉強によるところがでかいが。

ということで保存しておこう

次回いよいよガチ目のNNを回すの巻

逃亡生活(ボート)part7

ようやくだらだら取得していたレコードが18万を超え、

そろそろビッグデータの扱いについて考えないといけない。

いちばん大事なのって実用性だと思う、

ということで一回.read_sqlで全部取得してみてどれくらいかかるか見てみる。

2分ぐらいで終わるわ、すごいすごいpandas。

f:id:nemui3900:20181001083102j:plain

なんか102件ぬけてますけど?

まあいいやこれで。

とりあえずこれで一回ガチでどの程度予想できるかやってみるか。

使う特徴量を選別→ndarrayに前処理して追加していく

最初はラベルのoheからやる、わかりやすいから。

f:id:nemui3900:20181001085743j:plain

1着2着しかないデータがあるっぽいのでそのレコードを除外する。

正規表現で除外するのが多分一般的かと思うがめんどくさいのでできなかったIDを返す関数にしよう。

f:id:nemui3900:20181001091515j:plain

77個あった

これをインデックスでドロップしていく

ac.drop(de, axis=0)

単にこれでよかった、払い戻し金とかぶったらとか考えてしまったが多分文字列だったはず。

年齢は前回やっているので、次は体重。

ターゲットと年齢体重まで入ったので

ここで一旦blogを閉じる

 

次回

場のデータ

ボートレース場データ | BOAT RACE オフィシャルウェブサイト

ここに過去3ヶ月間の枠ごとの勝率があるのでぶち込む

 

逃亡生活(ボート)part6

いまやっと17万レコードまで取れた。

もっとリザルトがわかるように可視化を頑張っていかないといけないなあ。

つーことでここを読む

コールバック - Keras Documentation

www.slideshare.net

なるほど、前回のよくわからんモデルをACCとかLOSSをTensorBoradで見てみるか。

No graph definition files were found.

なるほど、わからん。

今日は食いすぎたので漫画でもよんでゴロゴロしてあした頑張る方向で。

追記:相対パスで指定できないだけだった、絶対パスでログの場所を指定すると表示される。前もおんなじことした気がするなあ。完全に忘れてたけど。

逃亡生活(ボート)part5

正解のラベル作るところから

"1-2-3"というラベルのままではhot-oneにできないので

pandasの機能で文字列を分割する。

前回は一つのラベルでやってしまったので一括でやっていく

note.nkmk.me

馬鹿すぎてえらい時間かかったわ、なんで3回も4回もタプルにしようとしたりしてるんだろう。疲れてるのよモルダー。

ということでblog作業をひたすら放置していきなり結果

モデルはこんな感じ

f:id:nemui3900:20180928201905j:plain

f:id:nemui3900:20180928201923j:plain

結果ランダムより悪いね、過学習ってやつか。いや違う20しかテスト用に用意してないだけでランダムと同じだわ。

次回から年齢は入れなくて良さそうだけどどうでしょうねえ。

流石に疲れすぎててblogやってる場合でもない気がするのでだらだらします。

逃亡生活(ボート)part4

ゴミを入れたらゴミができる。

と言われてもなにがいるもんで何が捨てるもんかわかんねーよ状態。

無駄に悩んでみたもののよくわからないので関係ありそうなものをちょっとずつ試す。

年齢、rank(A1とか)、全国勝率、場ごとの枠の勝率、モーター勝率、ボート勝率。

年齢と勝率は単にノーマライズできるだろうけど

rankはカテゴリー変数かと思ったけどこれも普通にノーマライズしたほうがいいか。

年齢から始める、

kerasのutilsでやろうと思ってるので読む

ユーティリティ - Keras Documentation

どうやらnumpyをいちいち使って高速化してる

入れたら怒られた

f:id:nemui3900:20180928175742j:plain

note.nkmk.me

.valuesを使うらしい。

f:id:nemui3900:20180928180158j:plain

いよいよノーマライズ

axis = -1の意味がいまいちわからねえと思った

なのでレーサー1から6までの年齢のndarryで試す

その前にpandasのカラム複数選択で躓く、リストで指定するのか。

f:id:nemui3900:20180928181425j:plain

f:id:nemui3900:20180928181914j:plain

axisがやっぱりよくわからない、1次元のテンソルだとあまり意味がなさそうだ。

とりあえず年齢のみでディープラーニングしてみる。

train_test_split()が便利そうなのでsklearn入れる

一部分で試そうと思ったがターゲットの部分つまり654がないとtargetのホットベクトルで躓くなあ、たまたま6-5-4があればいいがそんな都合のいいことはない気がするのでひとまず検索してなければくっつけてからドロップする関数かいとくか。

f:id:nemui3900:20180928183516j:plain

都合のいいことに今回はあったのでそのままいけそうだ。

けどよく考えたら正解のラベル作る関数まだ全然書いてなかった。

とりあえずこのpart4は閉じとこう

逃亡生活(ボート)part3

とりあえずスクレイピングして1年ぐらいとれて、ぼちぼちデータを形成しようかという重い腰をあげようか下げようかひたすらじりじりしている。

f:id:nemui3900:20180926221544j:plain

f:id:nemui3900:20180926221841j:plain

正解ラベルを6P3で123から654まで120個のラベルにhot-noeベクトル化まで。

多分そんな都合のいいライブラリないだろうから自作していく、

まず順列のリストを作成

f:id:nemui3900:20180926222938j:plain

 

itertoolsをインポートして順列を作成それを120の組み合わせパターン埋める

 

f:id:nemui3900:20180926224048j:plain

 

ラベルの形式がstrで'1-2-3'のような書式なので整形

それをインデックスにあてる

f:id:nemui3900:20180926225747j:plain

もともと文字列なので変換するのが無駄だったので

そもそもの順列の方を文字列で作ることにした

f:id:nemui3900:20180926230337j:plain

ようやくインデックスが返ってきたのでone-hot化する

ここは便利なKerasのユーティリティーを使う

f:id:nemui3900:20180926231201j:plain

最大値がそのままカテゴリー数なのでリストに119(6-5-4)を含めて試した。

ようやくラベルのベクトル化のめどが立ったところで今日は終わり。

次回は特徴量(データ)のベクトル化とか。

 

 

 

逃亡生活(ボート)part2

そろそろデータセットを作る必要がある、SQLを思い出す作業をしないといけない。

そして問題をどうするかという問題があってどうせ総当たりでやるので何からやるかだが

1,タイムによる回帰問題

2,上位・中位・下位の多クラス分類問題

1からやろうと思うんだけどラベル(タイム)が4着までしかないので間引くか適当にエンジニアリングする必要がある。

2はそのままやれそうなので先に2からやるのかなあ。

評価指数にオッズを絡めて払い戻し-掛け金を使いたいなあ。

ということでまずはデータセットからデータベクトル化と標準化するためには

データベースの構築が必須だなあ。