Open30

読者コミュニティ|誰でもかんたん! 自分の競馬予想AIを作ろう!

馬風 AI競馬馬風 AI競馬

本の感想や質問をお気軽にコメントしてください。

https://zenn.dev/umakaze/books/312ddc2bbf3601

馬風 AI競馬馬風 AI競馬

他のインポートはどうでしょうか。
pandas のバージョンアップ、再インストールなどで直る可能性がありますのでまずは試してください。
また、pandas は初期状態でインストールされているはずですが、他のものでされていないのもあるのでそれはインストールをお願いします。

馬風 AI競馬馬風 AI競馬
  • スクレイピング中のエラー
    df の append が将来のバージョンで使えなくなるということですね。
    書いてある通りconcat に変更しようと思います。
    今回のように、出力に問題のないエラーが煩わしいときは
import warnings
warnings.simplefilter('ignore')

で非表示に出来ます。

  • 馬番、勝率、複勝率の乗った表を出力する
    勝率・複勝率にわけるには、結構なコード改修か必要でして、総合的な偏差値のみなら簡単なんですが、それでもよろしいでしょうか。
馬風 AI競馬馬風 AI競馬

すみません、まだ追加しておりませんでした。
発展編のほうに入れますので、少々お待ち下さい。

データが増えれば精度が上がることはあります。ただ、競馬においては、傾向が変わりすぎて古いデータは参考にならない可能性があります。長くても5年程度で十分だと思っています。

馬風 AI競馬馬風 AI競馬

最後の1行

pred_output(df_results, test, pred_table, model_list)

を書き換えてください。

馬風 AI競馬馬風 AI競馬

馬場状態や馬体重が出ていないとエラーになります。
馬体重はレース約1時間前に発表されるのでその後が望ましいです。
前日に予想するなら、該当項目を除いたモデルにするか、適当な値で埋める方法が考えられます。

(こちらのコミュニティは購入者以外も見られますので、できればソースコードの過度な露出は避けていただきたいです)

れんれん

返信ありがとうございます。
ソースコード削除しました。

馬風 AI競馬馬風 AI競馬

私の方では同様の現象は確認できませんでした。
nanになる理由として、標準偏差が0になって0除算でnanになっているというのが考えられます。
いちど、

pred_table['偏差値'] = (50+(pred_table['偏差値'] - pred_table['偏差値'].mean()) / pred_table['偏差値'].std(ddof=0)*10).round(1).astype(str)

の一行をコメントアウトして実行してみたらどうなるか教えてください。

馬風 AI競馬馬風 AI競馬

ありがとうございます。

pred_table = preprocessing_pred(df_pred, df_for_add, df_for_encode)

で作成している pred_table の中身はどうなっているか比較してみてください。

馬風 AI競馬馬風 AI競馬

どうやら、未来のレースを予想するときに正規化がうまくいっていないようです。
processing_pred 関数の

# いちど過去データと合わせる
    if any(df_for_add.index.isin(df.index)):
#中略
    df = df_all.loc[df.index.unique()]

のあたりにコード違いがないかご確認ください。

hayateshihayateshi

スクレイピングの段階で躓いています。
スクレイピング初めてなんですが、エラーを調べてもそれらしい解決策が見つけられなかったので、どうすればよろしいでしょうか

馬風 AI競馬馬風 AI競馬

レースIDのリストを作成するところで同名のtimeがあり、整数型に置き換わってしまっているみたいです。
構造上の欠陥ですので修正します。

馬風 AI競馬馬風 AI競馬

レースIDのリストを作成するコードのfor文の
time を kai に替えました。こちらで再実行をお願いします。

SORASORA

notebookのipynb形式で書籍に追加して頂く事は出来ないでしょうか?

馬風 AI競馬馬風 AI競馬

修正が入った時のことを考え、現在はしておりません。検討したいと思います。

toorutooru

初めまして。この度書籍購入させていただきました。
とりあえずコピペで実際に予測を出力するところまで進めたのですが、馬風さんが配信で出力されている図と微妙に異なるようです。この辺りは学習に必要な過去データ数が異なっていたり、馬風さん自身のモデルで追加してみた特徴量などが影響しているのでしょうか?
(参考ですが5/1の阪神8Rなどは、私のモデルは7番の上りは遅く、5番も後方に位置していますが、馬風さんのモデルは7の上りは早く、5も中段に位置しているといったような形です)

[馬風さんの出力結果]

[私の出力結果]

馬風 AI競馬馬風 AI競馬

そうですね、私は独自に変更を加えていますし、全く同じモデルになることは無いと思います。

toorutooru

やはり自分なりにカスタマイズしてこそのモデルなのですね。
ありがとうございます。

lck999lck999

'202206010101'部分のところのの値をレースが始まる5分~20分前に自動で取得して実行することはできないでしょうか?

実際のレースを予測

df_pred = scrape_pred('202206010101', '2022/01/05')

また、別に質問されている方がいらっしゃいますが、馬の偏差値は発展編で確認できるのでしょうか?
よろしくお願いいたします。

馬風 AI競馬馬風 AI競馬

自動で取得するのはまた別の技術が必要になります。余裕があれば追加しますが、現状は労力に対するリターンが少ないと考え導入にはいたっていません。

偏差値のコードは発展編に載せています。

チェリらおかチェリらおか

初めまして。購入を検討しているのですが、こちらの本では回帰分析を扱っていますでしょうか。

馬風 AI競馬馬風 AI競馬

コメントありがとうございます。
回帰分析は扱っています。
位置取りや上りタイムの予想などに回帰分析を使用しています。

チェリらおかチェリらおか

返信ありがとうございます!
購入させていただきました。今後本を基に勉強していきますが、わからない箇所があった際はご教示いただけると幸いです。

miz0chimiz0chi

はじめまして。
update()の際にモデル再学習は必要でしょうか。
また、モデル学習時には直近のレース結果がテストデータになっていると思われますが、
直近のレース結果を含むモデルを予測時に使用したい場合は、どのように作成すればよろしいでしょうか。
よろしくお願いいたします。

馬風 AI競馬馬風 AI競馬

本日、Chapter4 前処理 のコードを修正いたしました。
Chapter3も先日修正しております。

ご質問等ございましたら、お気軽にコメントください。