閉じる
閉じる
閉じる
  1. 【MARNA】水に触れない!お米とぎが一気に楽になるアイテムが便利すぎ…
  2. 【Python】競馬データ収集スクリプトを書いてみた【機械学習】
  3. 【ユニクロ】ウルトラライトダウンコンパクトジャケットは最高の『日常着』…
  4. 【百均】アウトドアをしてなければ絶対に買わないであろう『アレ』をダイソ…
  5. 【定義山】日本一美味しい『あぶらあげ』を食べに行く
  6. 【競馬】菊花賞で気になる3頭を挙げてみた。
  7. 【リサイクル】ユニクロに古いウルトラライトダウンを持って行ったら割引券…
  8. 【ユニクロ】Engineered Garments コラボのフリースプ…
  9. 【AERO STRETCH】ワークマンのエアロストレッチ ブルゾンは神…
  10. 【Fender】思わず一目惚れしたテレキャスターを紹介【MIJ Tra…
閉じる

メガネをかけたキリンのブログ

【Python】競馬データ収集スクリプトを書いてみた【機械学習】

 

 

 

 

機械学習をやってみようと急に思い立った私は、まず選んだのが「競馬」というテーマでした。

 

秋から冬にかけて毎週のようにGIという大きなレースが開催される今こそやってみようというわけです。

 

ファーストステップとなる今回は、Pythonを使って競馬のデータを収集するスクリプトを実装したいと思います。

 

実装にあたって

今回、データ収集を行うスクリプトを組むにあたって参考にさせていただいたのはこちらのサイトのスクリプトです。今回の実装の詳しい部分はほぼすべてこちらに載っています。

 

こちらのスクリプトは、すでにそのほとんどが完成されているのですが、今回はさらに改良を行っていきたいと思います。

 

私はあくまで改良を加えただけですので、いいねは作者さんのサイトのほうに行なってください。

 

改良を行なった項目

今回、改良を行なった項目については以下の通りです。

  • 馬番と枠番を取得できるようになった
  • コースデータを芝・ダ・障と距離に分割して格納
  • レースタイムを取得できるようになった
  • 3Fのタイムを取得できるようになった
  • 着差を取得できるようになった
  • 頭数取得ができないケースを回避できるようになった
  • 乗り替わりがあった際のエラー処理を追加
  • 除外が含まれる行を削除してCSV出力する

 

ざっくりまとめると、これまでの機能に加えて、新たなデータを取得をできるようにした部分という形です。

 

ソースコード

ほぼオリジナルをベースに作成しています。

 

ソースコードでは2018~2019年のデータを取得できます。

 

もちろん、範囲を変えることで他の年のデータを取得できるのですが、範囲を広げると時間とメモリをたくさん消費するようになるので、短い期間を数回に分けて取得するのがいいかもしれません。

 

所感

元々のスクリプトの完成度の高さもあり、実装は割とすんなりいきました。

 

ただし、エラーハンドリングやアルゴリズムなど、まだまだ改善できる部分が残されたままです。

 

今回のスクリプトでは、tqdmを使っているので進行状況を確認できます。

 

 

 

また、インターネットサイトからデータを収集するスクレイピングについては岡崎市立中央図書館の事例にあるように、一つ間違えると大きな問題になる可能性を含んでいます。

 

そのあたりをよく理解した上でスクレイピングを行う必要があります。

 

今後の展望

以下にこれから実装したいことを書き記しておきます。

  • 馬場状態の取得
  • 複数のページにわたってのスクレイピング
  • 乗り替わり時のエラーハンドリング

 

特に、乗り替わり時のデータを取得しようとすると、騎手のデータがうまく取得できないという問題があり、その部分をどうするか悩んでいるところです。

まとめ

今回は競馬予想のためのデータ収集スクリプトを実装しました。

 

今回取得したデータはそのまま機械学習で取り扱うことはできないため、データの前処理をする必要があります。

 

次回は、今回取得したデータをもとに、データの前処理をしてみたいと思います。

関連記事

  1. 【Python】Udemyでオススメの講座3つ紹介します【機械学…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

ページ上部へ戻る