Pythonを使って機械学習で競馬予想

機械学習で競馬の予想をする過程を記していきます

データ収集

まずはデータ収集から行う。

データの量とアクセスのしやすさ、スクレイピングのしやすさからnetkeibaを利用する。

netkeibaには2008年以降のレース結果と2000年以降の馬データがある。馬データはもっと古いものもあったかもしれない。

どちらのデータも法則性のあるアドレスにまとめられているため、webページをクロールする技術がなくても大丈夫。アドレスを単純にfor文で回せば1ページずつ取得できる。ページ数が多く、怒られないように待ち時間を入れる必要があるため結構時間がかかる。パソコン的にはここが一番時間がかかるところなので、htmlをそのまま保存しておくことで再度スクレイピングをすることがないようにしたい。初めにやった時は一気にcsvに処理してしまい、後から取りきれていない情報があったことに気づき、初めからやり直しになってしまった。

今のところ、スクレイピングをしたことによってnetkeibaから怒られてはいないので大丈夫だとは思いますが、何かあった時に責任を負うのは嫌なので、待ち時間の設定などを含めて自己責任でお願いします。

 

私はとりあえず、レースの結果と、馬のデータ(基本情報、競争成績、血統)を保存した。

 

https://www.netkeiba.com/?rf=logo

大まかな計画

予想作成までの大まかな計画

  1. 各種データをNetkeibaのサイトから取得する

    www.netkeiba.com

  2. 取得したデータを機械学習にかけられる形に成形する
  3. 機械学習を行う(過去データで練習)
  4. 学習に必要なデータと不要なデータを選別する
  5. 予想の精度を高める
  6. オッズとリアルタイム比較できるようにする
  7. 実際のレースに適用

最初の記事

機械学習の練習として、Pythonを使って競馬の予想を行うことにしました。競馬歴10年、Python歴5年ほどの素人です。競馬の通算回収率は多分-20%くらいです。

勉強しながら系を構築していく過程を細々と記していこうと思います。当面の目標は精度はともかく予想をアウトプットさせることです。時々機械学習とは無関係な自分の予想も書こうと思います。

機械学習を使った競馬予想は数年前にブームになっていたらしく、検索で引っかかるのは数年前の記事が多いです。基本的にネット上の記事を拾い読みして、パッチワーク的に系を作っていく予定です。元となるデータはNetkeibaかから無料で得られるものを利用します。いったん予想をアウトプットするところまで行ったときに、より細かいデータが欲しくなったら有料のデータサイトを使うことも考えようかと思います。

Pythonのあれこれは主にnkmk noteを参考にしています。圧倒的にわかりやすく自分のコードに落とし込みやすいです。

なにはともあれ最後まで行けるように頑張ります。