【競馬予測】統計を使って予想してみた~その1~
私は、競馬初心者なのですが、前から過去の大量のデータを用いて統計的に競馬の予測をすれば、回収率が100%を超えるようになるのではないかと漠然と思っていました(思っていただけで、行動はしてなかった汗)。
そんなとき、あるブログで統計的に競馬の予測をしている記事をみつけたので、参考にさせて頂くことにしました。
データの取得とクリーニング
まず、予測に用いる過去のデータを以下のサイトから取得します。
http://db.netkeiba.com/?acc_param=db
次に、データのクリーニングをして、データベースに入れます。
なんと、ここまでを自動でやってくれるスクリプトを作成してくれているので、ありがたく使わせて頂きました。
以下の GitHub からスクリプト一式をダウンロードします。
https://github.com/stockedge/netkeiba-scraper
スクリプトは Scala で書かれていて、データベースは SQLite を使っています。Scala のインストール方法と SQLite の基本操作はそれぞれ以下の記事にまとめました。
Scala がインストールできれば、README.md に記載されている以下のコマンドを順番に実行していけばデータが SQLite に保存されました(時間は結構かかりました)。
#使い方
以下のコマンドを上から順に実行していけば最後に素性が作成される。
sbt "run collecturl"
レース結果が載っているURLを収集して「race_list.txt」に保存する。
sbt "run scrapehtml"
レース結果のHTMLをスクレイピングしてhtmlフォルダに保存する。HTMLをまるごとスクレイピングするので結構時間がかかる。
sbt "run extract"
HTMLからレース結果を抜き出しSQLiteに保存する。
sbt "run genfeature"
レース結果を元にして素性を作りSQLiteに保存する。
データベースを見てみる
スクリプトを実行して、無事 SQLite にデータが保存されたようなのですが、どんなデータが入っているか分からなかったので、データベースやテーブルの構造から確認することにしました。
まず、ディレクトリ構造ですが、スクリプトを実行した後は、「netkeiba-scraper-master」ディレクトリは以下のようになっていました。
「race.db」が SQLite のデータベースファイルになります。
「race.db」の中には、以下の4つのテーブルがありました。
- feature
- payoff
- race_info
- race_result
次回、実際に各テーブルにどんな情報が入っているかそれぞれ確認していきます。
関連記事
-
【競馬統計】馬齢と回収率の関係は!?【単勝・複勝】
今回は、過去の競馬のレースデータを用いて、単勝・複勝について、馬齢(ばれい)と回収率の関係を分析して
-
【競馬初心者】JRA の競馬初心者講座の動画をみた。
私は競馬初心者で1度も馬券を買ったことがなかったので、競馬に対する最低限の知識を付けようと思ってYo
-
【競馬】即PATで入金する方法。
今回は、中央競馬の投票をインターネットから行える即PATを使って入金する方法についてまとめます。
-
【競馬統計】馬の性別と回収率の関係は!?【単勝・複勝】
今回は、馬の性別と回収率の関係について、過去の競馬レースデータを用いて算出してみました。 過去
-
【競馬統計】人気と回収率の関係は!?【単勝・複勝】
過去の競馬のレース結果をデータベース化したので、せっかくなのでそれらのデータを分析してみようと思いま
-
競馬の馬券をインターネットから購入する方法【即PAT】
競馬の馬券をインターネットから購入する方法を調べてみました。JRA のホームページをみると、以下の3
-
【競馬収支】2018年4月8日|桜花賞(おうかしょう)G1
競馬をやり始めたので、収支を記録していこうと思います。 2018年4月8日の桜花賞(おうかしょ
-
【競馬予測】統計を使って予想してみた~その2~
統計を使った競馬予測の前回の続きです。 「race.db」の中にある、 fe