はじめに
この記事は書きながら更新していくため、途中で終わっていることがあります。
ご注意ください。
この記事は前回の続きです。
素人が競艇の機械学習をPythonで始めます。素人がPythonで遊ぶ記事になっております。
備忘録もかねてこの記事を書いているため重複や前と言ってたこと違う!みたいなこともあり得るためご了承ください。
また、完成したらコードなども載せていけたらなと考えています。
今はまだすっきりしない記事の内容ですが頑張っていきます。
今回の記事では、前回の整形したデータを使い、いざ機械学習始めていきます。
データについて
前回2016/01/01~2016/01/31までのデータを使うみたいな話だったんですけど
2016/01/01~2021/06/20までのデータを使うことにしました。
ダウンロードを短縮したいとかでデータが欲しい方がいればコメントください。
自分なりのデータ整形でデータフレームの行数は約170万くらいになっちゃいました。
処理に時間かかりすぎる笑
こんな感じです。
これをさらにいらないものなど省いていきます。
lightgbm・ランダムフォレストを使う
参考にしている方がこれでしていたので挑戦してみます。
1-3着以内を予想していきます。
なので1-3を1、4-6を0としていきます。
色々試行錯誤してみました。
パラメータは「optuna」というのを使って自動で設定してもらいました。
ここで大変だったのは資料を見てもわからないことでした。
もっとわかりやすい資料なり本なり探したほうがよかったかも
友達のほうがランダムフォレストでやって、自分はlightgbmでやってみました。
パラメータ
パラメータは以下のようになりました。
params = {
'objective': 'binary',
'random_state': 100,
'feature_pre_filter': False,
'lambda_l1': 0.0,
'lambda_l2': 0.0,
'num_leaves': 31,
'feature_fraction': 0.6,
'bagging_fraction': 1.0,
'bagging_freq': 0,
'min_child_samples': 20,
'num_iterations': 1000,
}
直前データもスクレイピング
まーこれはもう簡単にぱっぱってできました。
これで取得したデータを使って予測します。
予測した結果(適当に1レース)
自分たちが作ったのはとりあえず6人がどの順位になるかってものでした。
予想。「1.2.2.2.4.4」ということになり
結果は「1.5.2.4.3.6」でした。
精度がいいかって言われると全くダメですが、1号艇を一番予想しているところは褒めたいですね。
最後に
まだまだ簡単なことしかいていませんが、ここくらいまでなら想像していたよりも簡単でした。
ここから予想の仕方を変えるなど改善していく元気があれば更新していこうと思います。
一応作ったコードを載せたいと思っているんですが、編集に時間がかかるのと面倒だなって気持ちが勝ってまだ何もできてないです。
もうしばらくお待ちください。