AIの予想から、条件を決めて軸馬を絞り込みます。
import json
horses = []
for r in df.itertuples(): # df: AI予想の結果
horses.append({
"no": int(r.umaban), # 馬番
"name": r.name, # 馬名
"jockey": r.jockey, # 騎手
"style": r.style, # 逃げ/先行/差し/追込
"score": float(r.ai_score), # AIスコア(0〜100)
"odds": float(r.win_odds), # 単勝オッズ
"aptitude": int(r.apt), # 距離適性(1〜5)
"recent": [int(x) for x in r.last3], # 直近3走の着順
})
out = {"race": {"name": "東京11R", "course": "東京",
"surface": "芝", "distance": 2000},
"horses": horses}
with open("race.json", "w", encoding="utf-8") as f:
json.dump(out, f, ensure_ascii=False, indent=2)
必須項目は no と score です。odds は省けます(省くとスコアを勝率とみなした参考オッズで動きます)。枠番(waku)を省くと出走頭数から自動で決まります。印は mark に ◎〇▲☆△ を入れると表に出ます。
脚質(style)、距離適性(aptitude 1〜5)、近3走(recent)、騎手(jockey)は、同梱の add_axis_extras.py でDBから足せます。
1日分をまとめるときは、{"races": [ {"race": {...}, "horses": [...]}, ... ]} の形にします。race には course(東京・京都など)と no(レース番号)を入れると、会場とレース番号で切り替えられます。
このデータには単勝オッズがありません。AIスコアを勝率(%)とみなし、控除率20%で逆算した参考オッズを使っています。想定オッズ・払戻・的中率は目安で、人気順位や妙味の絞り込みは使えません。枠は馬番から自動で割り振った仮の値です。
| 番 | 馬名 | 脚質 | 適性 | AI | 単勝 | 人気 | 妙味 | 近3走 |
|---|
妙味=人気順位−AI順位。プラスが大きいほど、AIの評価が人気を上回ります。