前回までに、競馬予想のモデルの骨格は完成なのだ
#モデルの実用化
実際に予想する際の作業も、基本的にはほぼ同じ。
- TARGET frontier JV の出馬表から、馬データおよび前走データも読込み、全データを CSV で出力し使用
- 機械学習時と同じ様にデータの前処理を実行(レース検索から得られるデータとカラム名などが微妙に違うので、若干の修正必要。ここで案外手間取る💦)
- トレーニングデータと検証データの時に行った時系列でのデータ分割。アンダーサンプリングは、当然しない
- 回収率用テーブルを修正して、レース毎、Proba順にソートしてグラフ化(下の表:proba は、標準化・正規化してグラフで見やすいように 1~100 に収まるように調整)
ー レース毎に横棒グラフ化:コードとして適切かどうか分らんが、下記コードで成功
build.ipynb
# グラフを降順に表示するには、元データを昇順にしなければならないらしい
rc_rslt_r = rc_rslt.sort_values(['レースID', 'proba'], ascending=[True, True]).reset_index(drop=True)
race_lists = rc_rslt_r['レースID'].unique()
for race_list in race_lists:
ax = rc_rslt_r[rc_rslt_r['レースID']==race_list].reset_index(drop=True)
plt.figure(figsize=(20,12))
ax.plot(kind='barh', x='馬番', y='proba_std01')
#rc_rslt.hist(column='proba_std01', by="レースID", range=(0,1), figsize=(12,3))
race_corse = ax['場所'][0] + str(ax['R'][0]) + 'R' # もっとスマートな値の取得法ないかな?
plt.title(race_corse, fontname='MS Gothic')
plt.xlabel('proba')
plt.ylabel('馬番', fontname='MS Gothic')
plt.xlim([0,100])
plt.grid(True)
plt.show()
plt.close('all')
※項目名の日本語表記は何とか出来たが、馬番ではなく馬名を表示したいのだが・・・
良い方法あるのかな