見出し画像

データからみる競輪予想印の見方その2:#機械学習 #競輪予想

#機械学習 #競輪予想

合同会社ムジンケイカクプロ、代表のムジンです。

前回>データからみる競輪予想印の見方その1:#機械学習 #競輪予想

競輪ファンの方、もしくは大量データ好きの方、分析好きの方、こんちわ。
私は競輪ファンではありませんが、分析の対象として競輪を選んだのは、鍛えた人間の生身の戦いというのが好きだからです。
(プロレスや格闘技が好き)

いい脚してるわー

元になるデータ

過去に行われた約42000レースのデータから読む傾向と題して、データを見ていこうと思います。

元データの集積方法

Pythonによるスクレイピング

1,DBへ、各月ごとの開催情報のURLをExcelで作って格納。

2,開催情報のURLから、レースごとのURLを一覧化し、DBへInsert

3,2で作ったURLから、HTMLをローカル保存。

4,ローカル保存したHTMLから必要部分をスクレイピング

予想と予測

◎○×△▲の順で、ある程度着順が山なりになっていてくれるはずだ。という予想をしておりました。

画像1

本命◎の1着と、無印の7着からの5着以下の数値を見ると、ここはまぁそうだろうと。

×△▲ではどうか

数字ではなく、ビジュアルで見て感じたこと。

5着を中心にバラける。

3着を中心にバラける

×

む?
こいつか犯人は。

予想印で起こること

予想印を見た人の心理が気になるのです。

予想印が良ければ、それを買うことに信頼性が生まれると。

買いやすい。

実際に1着になる確率も高そうだ。
(この時点では計算をしていない)

競輪は2着も当てなければならない。

○は◎の予想印に対して、かなり見劣りする信頼度に感じる。
棒が短い。

本命対抗でくるとして、予想印のもっともらしさ、正しさを出せばいいのかもしれない。
(尤度については、また後ほど)

この時点で、2着の○の信頼度は、1着の◎ほど高くないし見せかけだ。

心理的には買いたくなるが、よく考えるべきだ。

となっています。

順に紐解く
勝率くらいなんですよね。
いくつかその他、マイナスの相関がありますが、わかりやすいところだと勝率や連対率。

Pythonプログラムで相関関係図を出してみるとこんな感じ。

画像2

数値データをクリーニング(前処理をクリーニングと呼んでしまう癖)する前の段階で、着順に関係ありそうな数字は勝率。

適当な分析なので、以下の画像はカテゴリ値がありません。
カテゴリ値というのは、数字でないもの(予想印は数値ではなく文字)だと思ってください。

ヒートマップ出力のコード抜粋

df = df.drop(columns=['車番'])
df = pd.get_dummies(df,columns=['予'],drop_first=True)

df_xx = df[0:100]

corr = df.corr()
print(corr)
sns.heatmap(corr, square=True, annot=True)
plt.show()

[予]が予想カラムの名前です。
ONE-HOTな形にして、数値にすることで、相関を出しています。

画像3

思ったほど、わかりやすく相関は出ないものの、◎の信頼度が○に比べて2倍近くあるということとして、目安にしようと思いました。
※大いに間違っているかもしれない。

予想印と着順の関係

この関係が崩れれば、オッズが上がると仮定しました。
着順が1着で、予想印が無印だったら配当が高いということにして、計算してみます。

1着 かつ 予想印が注以下のよくなかった選手

pr1 = df.query("着順1==1 & yosou_in < -2 ")

10632回/42000レース

2着 かつ 予想印が注以下のよくなかった選手

pr2 = df.query("着順1==2 & yosou_in < -2 ")

7131回

#2着以上で結果が穴
pr1 = df.query("着順1<=2 & yosou_in < -2")
19491

#3着以下で結果が穴
pr2 = df.query("着順1>=3 & yosou_in < -2")
9933

#2着以上で結果が順当
pr3 = df.query("着順1<=2 & yosou_in >= 0")
50628

#2着以上で結果が順当
pr4 = df.query("着順1<=2 & yosou_in == 0")


#3着以下で結果が順当
pr5 = df.query("着順1>=3 & yosou_in == 0")

調べてみると

固いレースは、上位陣が潰し合うようなグレードの高いレース以外がそれに当たると仮定。

中穴くらいが出やすい条件がある。

選手が、風の影響を受けやすいレース場がある。

機械学習モデルの整備

レース場ごとにモデルを作るか検討。

レースのグレードごとにモデルを作るか検討。
開催何日目の開催か、も含む。
※競輪というのは、どうやら3日くらいかけて勝負しているようだ。

更に見てみる

既に素晴らしい分析を公開されている方が、ネット上に散見されますが、自分でやってみないことには理解できないのです。

#2着以上で、予想印より着順が良かった数
pr2 = df.query("着順1!=0 & 着順1<=2 & yosou_in > 1")
35079

#2着以上で結果が順当 予想印と着順が同じだった数
pr3 = df.query("着順1!=0 & 着順1<=2 & yosou_in == 0")
30079

本命対抗以外の予想印で、1着2着になってしまったものが、35000回あります。
これは結構な確率。更に内訳。

画像4

◎はそのまま1着になることが多い。
◎=1着=差が0で真ん中。
これが真ん中の青線。
左にずれると、着順が下がるので、◎は2着にもなりやすい。

赤いのが○で、○=2着=差が0で真ん中。
右に行くと着順が上がるので、1着になることも多い。
2着ほどではないにしろ。
なんだかここ重要な気がする。

✕ですね。これは問題。
緑がヤバイ気がする。
そのまま3着でくるより、上位になりやすい。
7車のレースでも9車のレースでも(この言い方はよくわからない)3着を中心にした上下は、+も-も均等になるはずだから、ここに偏りを見ることができる。

本紙予想は「◎○×△▲注」
デスク予想は「◎○×△▲」の順で強弱が表現されます。
Kドリームスさんより引用

これだな、ほとんどこれ。

✕が何着にいくか見極める。
これに注力しよう。

これは確率%とか出さなくても、全体的には、✕予想がついている選手は、そのまま3着でおとなしく終わらない!

という結論にしておこう。

いつもお読みいただき、ありがとうございます。 書くだけでなく読みたいので、コメント欄で記事名入れてもらうと見に行きます。