この本について

この本では競馬予想AIを1から作るYouTubeチャンネル 「競馬予想で始める機械学習・データ分析」 の内容に沿って、競馬予想AIのソースコードをまとめて常に最新版にして公開しています。 まだ動画を見たことのない方は、是非まずは下のチャンネルを見てみてください。

https://youtube.com/channel/UCDzwXAWu1zIfJuPTTZyWthw

この書籍『競馬予想で始める機械学習〜完全版〜』は、次の2つの本の内容をセットにしたものになります。

前半:Chapter02〜Chpater17

前半部分は以下の書籍と同じ内容となります。

https://zenn.dev/dijzpeb/books/951e0f755229125bb79c
(旧:競馬予想で始める機械学習〜最先端ver〜)

ソースコードや解説は常に最新のものに更新されていきますので、今後改良されるたびに、それが反映されるような書籍になっています

想定読者

  • 入門書レベルのPython、機械学習が分かる方
  • 動画より、文字での説明が好きな方
  • 動画の更新より先に、最新版のソースコードを入手したい方

チャプター構成

前半パートはさらに2つのパートに分かれていて、

  • Chapter02~Chapter07:YouTube動画の第28回までの内容をまとめたもの
  • Chapter08~Chapter17:本格的な運用や共同開発を目指した、新しいバージョンのソースコードについて解説

となっています。前半を旧ver、後半を新verと呼ぶことにすると、各ステップでの対応は以下のようになっています。

解説内容 旧ver 新ver
1. 全体像 Chapter08(無料公開)
Chapter09(無料公開)
2. 定数の定義 Chapter10(無料公開)
3. データ取得(スクレイピング) Chapter02(無料公開) Chapter11(無料公開)
Chapter12
4. データ加工 Chapter03 Chapter13
Chapter14
5. 機械学習モデル作成・学習 Chapter04 Chapter15
6. モデル評価・回収率シミュレーション Chapter05 Chapter16
Chapter17
7. 実際に賭ける Chapter06(無料公開) (これまでの各ステップで解説)

各ステップ、どのような内容なのかを簡単に整理しておきます。

  1. 全体像(新verのみ):データの流れや全体的な実行コードについて解説しています。
  2. 定数の定義(新verのみ):ファイルパスなどを定数にしておくことで、開発・運用に最適化されたソースコードとなっています。
  3. データ取得(スクレイピング):競馬予想AIに必要なデータを、スクレイピングにより取得する部分を解説しています。
  4. データ加工:取得したデータを加工して機械学習で使える形にする方法について解説しており、精度の8割程度を占めると言われている重要な工程です。機械学習の教本などに記載されている「すでに整ったデータで機械学習モデルを作る」場合とは違った、実データならではのデータ加工も学ぶことができます。
  5. 機械学習モデル作成・学習:実際に機械学習モデルを作成し、学習させる部分を解説しています。現在では定番となっているLightGBMを使った予測モデルを作成します。
  6. モデル評価・回収率シミュレーション:作ったモデルで競馬予想をした場合、回収率はどうなるのか、シミュレーションする方法について解説しています。
  7. 実際に賭ける:作った競馬予想AIで、実際に賭けてみた時の様子を載せています。

後半:Chapter18〜

後半部分は以下の書籍と同じ内容となります。

https://zenn.dev/dijzpeb/books/6bb4672104889fc17829
(旧:競馬予想で始める機械学習〜教科書ver〜)

YouTube動画の教科書的に使うことができ、動画中に出てくるソースコードに加えて、現在では変更された箇所や注意点、よくあるエラーの対処方法などを載せています
この部分を動画と共に読めば、Python・機械学習初心者でも、自分で1から競馬予想AIが作れるようになることを目指して作っています。

第4回までの動画のコードは現在無料公開していますので、ぜひご覧ください。

想定読者

  • 動画中のソースコードが欲しい方
  • Python・機械学習の初心者
  • 文字より、動画での説明のほうが好きな方

コミュニティについて

書籍を購入すると、購入者限定コミュニティに参加することができます。(現在参加者約400名)
学習を進めていくうちに出てきた疑問点の解消や、より精度の高い競馬予想AIを作成するための議論などが活発に行われているので、ぜひご参加ください!

何ができるか

  • 掲示板での交流

    動画や書籍を進める上で分からないことや、新しいアイデアなどを自由に議論し合うことができます。過去に議論されてきた話題も全て残っており、検索することができるので、何か気になることがある場合や発信したい情報がある場合はぜひ参加してみてください。もちろん「見るだけ」の参加も大歓迎です。

  • 共同開発
    新しいバージョンの競馬予想AIは共同開発用に作られており、共同開発リポジトリではPull requestを受け付けています。
    「ソースコードの改善点を発見した」「自分のアイデアや書いたコードを反映させたい」などあれば、ぜひPull requestを送ってみてください。

参加対象者

以下のいずれかを満たす人を対象者とします

参加方法

GitHubのアカウントを作成し、dijzpeb2@gmail.comまで、以下の2点をお送りください

  • 書籍の購入証明(購入した時のメールや、支払い完了画面のスクリーンショットなど)
  • GitHubアカウント名

確認が出来次第、招待のリンクを送信します。

実行環境

本書に出てくるソースコードは以下の環境で開発されました。

Chapter02~Chapter07

  • OS: MacOS 10.12.6
  • 開発環境: JupyterLab 2.1.3
  • 言語: Python 3.7.6

Chapter08~Chapter17

  • OS: MacOS 12.3.1
  • 開発環境: Visual Studio Code 1.70.1
  • 言語: Python 3.8.5

必要なパッケージ

lightgbmやBeautifulSoupなどはインストールが必要なので、pipやcondaなどで適宜インストールしてください。本書では、以下のパッケージがインポートされているとして、話を進めます。

import pandas as pd
import numpy as np
import datetime
from tqdm.notebook import tqdm
from sklearn.metrics import roc_auc_score
from sklearn.preprocessing import LabelEncoder
import lightgbm as lgb
import requests
from bs4 import BeautifulSoup
import time
import re
from urllib.request import urlopen
import optuna.integration.lightgbm as lgb_o
from itertools import combinations, permutations

お問い合わせ

書籍の内容に関する質問は書籍購入者限定コミュニティへ投稿してください。
その他のお問い合わせはメールアドレス(dijzpeb2@gmail.com)までお願いします。

更新情報

  • 2022/8/14 各モジュールの解説が完成
  • 2022/8/7 modules/preprocessingの解説まで追加
  • 2022/7/21 modules/constantsの解説追加
  • 2022/7/14 「はじめに」の内容を編集
  • 2022/7/9 新verの実行コード追加
  • 2022/7/7 新・競馬予想AIの概要を追加
  • 2022/7/1 Windows環境でのファイルパス取得方法(開発・運用編#1,#2)など、ソースコードを複数修正
  • 2022/04/16 開発・運用編#1,#2のソースコード追加
  • 2022/1/16 スクレイピング時に存在しないrace_idでAttributeErrorになる問題を回避
  • 2021/12/29 ソースコードを折り畳めるように変更。コピーするとインデントがおかしくなるところを修正。
  • 購入者限定GitHubコミュニティを作成
  • 2021/9/4 第1回〜第9回のソースコードに「よくあるエラー・質問」追加
  • 2021/9/3 読者コミュニティのコメント数が上限に達したので、新しいコミュニティを作成
  • 2021/9/1 第28回のソースコードを追加
  • 2021/8/31 第26,27回のソースコード追加
  • 2021/8/30 第23~25回のソースコード追加
  • 2021/8/28 第21, 22回のソースコード追加
  • 2021/7/19 第20回のソースコード追加
  • 2021/7/17 動画中のソースコード第19回追加
  • 2021/7/14 回収率シミュレーションを更新
  • 2021/5/15 馬券の種類に馬連・ワイド・三連複・三連単追加&データ追加
  • 2021/3/2 シャープレシオについての説明を追加。各クラスのread_pickle関数をupdate_data関数を使ったものに変更。
  • 2021/2/25 回収率シミュレーションに標準偏差のプロット追加
  • 2021/2/13 馬体重が"計不"の場合の処理追加。修正したModelEvaluatorクラスのpredict_proba関数に引数「drop_tansho」を追加
  • 2021/2/7 単勝適正回収値のコード更新
  • 2021/2/2 ソースコードをGistによる埋め込みに変更
  • 2021/1/31 HorseResultsクラス更新
  • 2021/1/11 開発ロードマップ更新
  • 2021/1/8 馬連BOXによる回収率シミュレーション追加
  • 2020/12/19 モデル作成・学習のソースコードにミスがあったため修正
  • 2020/12/17 開発ロードマップ更新
  • 2020/12/17 パラメータチューニング後の訓練で、エラーが出る場合の対処法を追加
  • 2020/12/15 特徴量を追加し、回収率144%→151%に更新。
  • 2020/12/15 開発ロードマップ更新: 上がりタイム
  • 2020/12/13 出馬表で体重変化が「前計不」のときに対応できるように更新
  • 2020/12/9 Zenn上で本の質問や感想などを受け付けるコミュニティを作成
  • 2020/12/8 動画中第7回のソースコードを修正。開発ロードマップ更新
  • 2020/12/6 開発ロードマップ更新
  • 2020/12/4 classmethod, staticmethodを導入
  • 2020/11/29 動画中第8回のソースコード修正
  • 2020/11/23 目次をクリックしたらソースコードに飛べるように変更。
  • 2020/11/16 動画中第5回のソースコード修正。
  • 2020/11/13 optunaを使うことで回収率120%→144%に更新。
  • 2020/11/10 Chapter03の出馬表データの加工で、血統データを追加するコードを追加。
  • 2020/11/6 動画中第5回のソースコード修正。開発ロードマップ更新。
  • 2020/11/2 動画中のソースコード第5回に、よくあるエラーと対処法を追加。
  • 2020/11/1 ModelEvaluatorクラスのコードに誤植があったため修正。