AI競馬予想用データ

こちらの記事ではクラウド部のブログ記事「AIによる競馬予想を検証したので的中率と回収率を公開します。コードあり。」で競馬データの機械学習で使用したレースの加工データや、AI分析結果の資料を提供いたします。

データについて

上記でご紹介した記事でのAI分析に使用したcsvファイルを、5種類セットでこちらの記事に添付しております。こちらの有料記事をご購入いただくと、対象のファイルをダウンロードできるようになります。以下データについての説明となります。

・data_after_20230601_nan
機械学習の予想用データです。2023年6月1日~2023年8月31日の加工済レースデータです。機械学習用にレース結果を空欄にしております。
・data_before_20220101.csv
機械学習の訓練用データです。2019年1月1日~2022年1月1日の加工済レースデータです。
・data_before_20230601.csv
機械学習のテスト用データです。2022年1月1日~2023年6月1日
・pred_predictions.csv
予測結果のデータです。2023年6月1日~2023年8月31日のレースごとに、1着になる可能性の一番高い馬を抽出しております。
・final_predictions.csv
分析用のデータです。pred_predictions.csvとレース情報を結合して予測結果のデータを見やすくしております。

ご注意事項
・この記事で提供しているデータは、クラウド部が独自に取得した中央競馬のレースデータを機会学習用に加工したものです。機会学習以外の用途での使用は想定しておりません。
・クラウド部のブログ記事にて的中率や回収率なども公開しておりますが、データは機械学習の教材として使用しており、競馬の的中を保証するものではございません。馬券の購入に関しては、自己責任でお願いいたします。

動作検証について

本記事で添付したファイルはColaboratoryにて動作検証を行っております。
Colaboratoryに以下のファイルをアップロードして、下記のコードを実行しております。実行するとpred_predictions.csvが生成されます。

・ファイル
data_before_20230601.csv
data_after_20230601_nan.csv
data_before_20220101.csv

・コード
下記コードは、ブログ「クラウド部」の記事に掲載しているものと同じです。

import pandas as pd
import lightgbm as lgb
from sklearn.model_selection import train_test_split

# データを読み込む
data_before_20220101 = pd.read_csv('data_before_20220101.csv')
data_before_20230601 = pd.read_csv('data_before_20230601.csv')
data_after_20230601_nan = pd.read_csv('data_after_20230601_nan.csv')

# 特徴量とターゲットの準備
X_train = data_before_20220101[['kinryo', 'basyo', 'race_num', 'umaban', 'race_class', 'type', 'distance', 'sei', 'old', 'pop', 'odds', 'horse_id', 'race_id']]
y_train = data_before_20220101['result'].apply(lambda x: 1 if x == 1 else 0)

# LightGBMのデータセットに変換
train_dataset = lgb.Dataset(X_train, label=y_train)

# ハイパーパラメータを設定
params = {
    'objective': 'binary',
    'metric': 'binary_logloss',
    'boosting_type': 'gbdt',
    'num_leaves': 33,
    'learning_rate': 0.05,
    'feature_fraction': 0.9
}

# モデルを学習
num_boost_round = 100
model = lgb.train(params, train_dataset, num_boost_round=num_boost_round)

# 予測用データの特徴量を準備
X_pred = data_after_20230601_nan[['kinryo', 'basyo', 'race_num', 'umaban', 'race_class', 'type', 'distance', 'sei', 'old', 'pop', 'odds', 'horse_id', 'race_id']]

# テストデータの予測
y_pred_pred_prob = model.predict(X_pred)

# 予測結果をデータフレームに保存
pred_predictions_df = pd.DataFrame({'race_id': X_pred['race_id'], 'horse_id': X_pred['horse_id'], 'probability_of_1': y_pred_pred_prob})

# race_idごとに予測確率が最大のhorse_idを選択
pred_predictions_df = pred_predictions_df.loc[pred_predictions_df.groupby('race_id')['probability_of_1'].idxmax()]

# race_idごとにhorse_idの評価点を付与
hose_ratings = pred_predictions_df.groupby('race_id')['probability_of_1'].rank(ascending=False)
pred_predictions_df['horse_rating'] = hose_ratings

# 予測確率が1に近いhorse_idのリストを取得
selected_hose_ids = pred_predictions_df['horse_id'].tolist()

# 予測結果をCSVファイルに保存
pred_predictions_df.to_csv('pred_predictions.csv', index=False)

ダウンロード用ファイル(有料)

下記よりダウンロードをお願いします。

ここから先は

0字 / 5ファイル

¥ 2,980

この記事が気に入ったらサポートをしてみませんか?