JvLink To Importer

競馬予想に使えるPythonライブラリ5選

競馬予想に使えるPythonライブラリ5選

競馬データベースを構築したら、次はPythonで分析・予測です。この記事では、競馬予想で実際に役立つPythonライブラリを5つ紹介します。すべて無料で使えます。


1. pandas — データ操作の基盤

競馬データ分析で最も使うライブラリです。SQLで取得したデータをDataFrameとして扱い、集計・フィルタ・結合・変換が自在にできます。

import pandas as pd
from sqlalchemy import create_engine

engine = create_engine('postgresql://user:pass@localhost/keiba')
df = pd.read_sql('SELECT * FROM umagoto_race_joho WHERE kaisai_nen >= 2024', engine)

# 騎手別の勝率を一発で算出
df['is_win'] = df['kakutei_chakujun'] == '01'
df.groupby('kishumei_ryakusho')['is_win'].mean().sort_values(ascending=False).head(10)

使いどころ: データの読み込み・前処理・集計・特徴量作成。競馬分析のほぼ全工程で使います。


2. LightGBM — 予測モデルの定番

勾配ブースティングの実装で、競馬予測で最も使われているモデルです。学習が速く、カテゴリ変数をそのまま扱え、欠損値にも対応しています。

import lightgbm as lgb

train_set = lgb.Dataset(X_train, y_train)
valid_set = lgb.Dataset(X_valid, y_valid, reference=train_set)

params = {
'objective': 'binary',
'metric': 'binary_logloss',
'learning_rate': 0.05,
'num_leaves': 31,
'verbose': -1,
}

model = lgb.train(params, train_set, num_boost_round=1000,
valid_sets=[valid_set], callbacks=[lgb.early_stopping(50)])

使いどころ: 「3着以内に入るか」の二値分類、着順の回帰予測。特徴量の重要度も確認できるので、どのデータが予想に効いているかを把握できます。


3. Optuna — ハイパーパラメータ自動チューニング

LightGBMの num_leaveslearning_rate などのパラメータを自動で最適化してくれるライブラリです。手動で調整するよりはるかに効率的です。

import optuna

def objective(trial):
params = {
'objective': 'binary',
'metric': 'binary_logloss',
'learning_rate': trial.suggest_float('lr', 0.01, 0.1),
'num_leaves': trial.suggest_int('num_leaves', 15, 63),
'feature_fraction': trial.suggest_float('ff', 0.5, 1.0),
'bagging_fraction': trial.suggest_float('bf', 0.5, 1.0),
'verbose': -1,
}
model = lgb.train(params, train_set, num_boost_round=500,
valid_sets=[valid_set], callbacks=[lgb.early_stopping(30)])
return model.best_score['valid_0']['binary_logloss']

study = optuna.create_study(direction='minimize')
study.optimize(objective, n_trials=100)
print(study.best_params)

使いどころ: モデルの精度を最後の数%詰めたいとき。100回の試行で最適なパラメータの組み合わせを自動探索します。


4. matplotlib / seaborn — データ可視化

分析結果をグラフで可視化するライブラリです。数値だけでは見えない傾向やパターンを視覚的に発見できます。

import matplotlib.pyplot as plt
import seaborn as sns

# 距離別の勝率をグラフ化
distance_stats = df.groupby('kyori')['is_win'].mean().reset_index()
plt.figure(figsize=(10, 5))
sns.barplot(data=distance_stats, x='kyori', y='is_win')
plt.title('距離別勝率')
plt.ylabel('勝率')
plt.xlabel('距離(m)')
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig('distance_win_rate.png')

使いどころ: 特徴量の分布確認、モデルの予測結果の分析、回収率の推移グラフなど。分析の「見える化」に欠かせません。


5. SHAP — モデルの判断根拠を可視化

「なぜこの馬が高評価なのか」をモデルに説明させるライブラリです。各特徴量がどの程度予測に寄与しているかを数値化・グラフ化できます。

import shap

explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)

# 特徴量の重要度を可視化
shap.summary_plot(shap_values, X_test)

# 特定のレースで特定の馬の予測根拠を表示
shap.force_plot(explainer.expected_value, shap_values[0], X_test.iloc[0])

使いどころ: モデルのデバッグ、予想の根拠説明。「上がり3Fが速かったから高評価」のような説明ができるようになり、モデルの改善ポイントも見つけやすくなります。


まとめ

ライブラリ 用途 インストール
pandas データ操作・集計 pip install pandas
LightGBM 予測モデル pip install lightgbm
Optuna パラメータ最適化 pip install optuna
matplotlib / seaborn 可視化 pip install matplotlib seaborn
SHAP モデル解釈 pip install shap

これらを組み合わせれば、データの取得から予測モデル構築、チューニング、結果の可視化まで一気通貫で行えます。

まずは JvLink To Importer でデータベースを構築し、pandasでデータを眺めるところから始めてみてください。

この記事をシェア

Post