Open170

読者コミュニティ2

ピン留めされたアイテム
競馬予想で始めるデータ分析・機械学習競馬予想で始めるデータ分析・機械学習

この度、より議論に適した場として、GitHubに書籍購入者限定コミュニティを用意しましたので、今後の投稿はそちらにお願い致します!

何ができるか

  • 掲示板での交流

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

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

参加対象者

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

参加方法

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

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

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

sho_003sho_003

約1カ月、中央競馬で運用してみました。結果と感想です。
使ってみて、「ランク学習が必要なのかな?」と感じました。

使ってみた結果

賭けたレース・賭けていないレースはありますが、本番の実行コードで1頭目に出力された馬の結果です。(7/31-9/4 中央競馬の全レース(348R))
※スコアに関係なく、出力された1頭目(スコアが最も高い馬番に全て賭けた場合)です。

R 単勝回収値 複勝回収値 勝率 複勝率
1R 166.6% 100.0% 34.5% 62.1%
2R 71.0% 61.0% 24.1% 48.3%
3R 76.6% 65.2% 17.2% 41.4%
4R 71.7% 96.2% 24.1% 48.3%
5R 157.2% 114.1% 6.9% 17.2%
6R 186.9% 189.0% 24.1% 48.3%
7R 83.1% 79.3% 31.0% 55.2%
8R 53.4% 61.0% 20.7% 34.5%
9R 42.1% 65.2% 17.2% 65.5%
10R 54.1% 96.2% 17.2% 48.3%
11R 72.1% 114.1% 17.2% 37.9%
12R 93.4% 189.0% 31.0% 55.2%
平均 94.0% 91.6% 22.1% 46.8%

流し馬券の場合、回収率が100%を超えるために、score=3.0以上必要なことが多いです。
score=3.0以上の結果は、348R中12R(全体の3%程度)でした。

現状でこのAIは新馬戦や未勝利戦・1勝クラス・2勝クラスあたりで使える印象です。
ざっくりと「午前のレースが得意・午後は苦手」という結果です。

感想

「戦績が少ない馬のレースは予測できる」状態のため、過去のレース結果の比較が難しいように感じました。
今後の開発ロードマップに記載されているように、「lambdarank」で学習することで的中率の精度が上がるのでは?と感じているところです。

ランク学習について調べたところ、Queryデータを作るのが大変そうな印象で挫折しました。。。
素人には難しいです。。

希望

・精度が上がると思うので、是非「ランク学習」を取り入れて頂きたいです。
使えそうなサイト:[競馬予想AI] ランク学習で着順予想するとなかなか強力だったお話

・賭け方について、「フォーメーション」にすることでBOXよりも回収率が上がるのではないでしょうか。
フォーメーションの場合、「回収率に期待できる賭け方を探す」「レースごとに良い賭け方を出力する」というものでしょうか。。

WakaToWakaTo
train_query = train.groupby(level=0)['馬番'].count()
valid_query = valid.groupby(level=0)['馬番'].count()

Queryデータはこれで一発です!

私は先行して試していますが、目的変数の調整が難しいですね…。着順を何着まで評価するかや、オッズの重み付けの度合いなど、色々試行錯誤してます。

toorutooru

初めまして。
新しいコミュニティが出来ていたので、こちらに投稿させて頂いています。

1つ前のコミュニティで、Hamaさんという方が回収率表示する際、gain処理での時間がかかりすぎるという投稿をしていらしたのですが、私も2017年~2021年8月8日までのデータを使用して、馬連BOXで約8時間かかる問題が発生しています。(単勝でも15分程)

プログラミング初心者のため原因を探る方法も掴み切れていない状況です。

どなたか同じような現象が起きた方、改善策がお分かりになる方がいればご教授頂けると幸いです。

KeshikiKeshiki

だいたい同じくらいのデータ量で試してみましたが、こちらでは1/100完了時点での推定完了時間は40分弱でした。
Hamaさんが何度か試してみたら解決したとあるので、メモリ不足とかじゃないでしょうか。もしくは単純なスペック不足か。
一度jupyter labをシャットダウンしてもう一度試してみてください。スペックの可能性がある場合はgoogle colabを試してみるなどしてみてください。

toorutooru

Keshikiさん
その後別PCで試す機会があり、Keshikiさんと同様に40分弱の推定完了時刻となりました。
仰られる通り、メモリ不足・スペック不足の可能性が高いように思われます。
アドバイス頂きありがとうございました。

kamekichi1231kamekichi1231

はじめまして
merge_horse_results()について質問があります。
この関数は、r_data_peの各レースの馬データに対して、「そのレースより過去の成績を載せた列を付け足す」ものか、「全期間の馬の過去成績を載せた列を付け足す」どちらなのでしょうか?

仮に後者とした場合、04章 【機械学習モデル作成&学習】にてr.data_cを分割してtest,trainデータとしていますが、r.data_cの分割のされ方によってはtrainデータに未来の馬の成績が入った状態になり、testデータによる検証に影響を与えるのではないでしょうか?
(素人考えですが、的外れでしたら申し訳ありません)

KeshikiKeshiki

前者です。
HorseResultsクラスのaverage()でレースの日付より過去のデータに絞っています。

akirak1108akirak1108

いつもお世話になっております。

HorseResultクラスにある上り3Fのデータを使用してみようと思い、preprocessing()にて、開催、距離に応じた基準値からの差を出してみようと思いました。

そこで開催地が01:札幌だったらという感じで条件を追加していこうとしたのですが、うまく条件を記述できません。。初歩的な質問で申し訳ないですが、どのように記載すればよいでしょうか・・?

  if df['開催'] == '01':

という感じでやってみたのですが、以下のエラーが出てしまいます。

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

イメージ的には

 if df['開催'] == '01':
  if df['馬場'] == '良':
    if df['course_len'] == 12:
      →札幌で馬場が良で距離1200mのときの3F基準値と、取得した3Fの差を出す

という感じで考えていました。

KeshikiKeshiki

dfに入るのが1レース分ならif df['開催'].iloc[0] == '01':でできます。開催場所は同じなので一番上のレコードだけ見るという感じです。

1レース分じゃないなら、専用の関数を作っておいて、groupbyしてapply lambdaでその関数を回し、その結果をマージするのがいいと思います。

akirak1108akirak1108

Keshiki様> いつもありがとうございます。

HorseResultsクラスのpreprocessing()なので、1レースずつの処理になると思います。(他の処理も同様に処理をしているため。)

試しに教わった条件を入れてみたところ、エラーは出なかったのですが、どうも条件に入らないようです。

class HorseResults:
    def __init__(self, horse_results):
        self.horse_results = horse_results[['日付', '着順', '賞金', '着差', '通過', '開催', '距離','上り','馬場']]
        self.preprocessing()
・
・
・
    def preprocessing(self):
        df = self.horse_results.copy()

        # 着順に数字以外の文字列が含まれているものを取り除く
        df['着順'] = pd.to_numeric(df['着順'], errors='coerce')
        df.dropna(subset=['着順'], inplace=True)
        df['着順'] = df['着順'].astype(int)

        df["date"] = pd.to_datetime(df["日付"])
        df.drop(['日付'], axis=1, inplace=True)
        
        #賞金のNaNを0で埋める
        df['賞金'].fillna(0, inplace=True)
        
        #1着の着差を0にする
        df['着差'] = df['着差'].map(lambda x: 0 if x<0 else x)
        
        #レース展開データ
        #n=1: 最初のコーナー位置, n=4: 最終コーナー位置
        def corner(x, n):
            if type(x) != str:
                return x
            elif n==4:
                return int(re.findall(r'\d+', x)[-1])
            elif n==1:
                return int(re.findall(r'\d+', x)[0])
        df['first_corner'] = df['通過'].map(lambda x: corner(x, 1))
        df['final_corner'] = df['通過'].map(lambda x: corner(x, 4))
        
        df['final_to_rank'] = df['final_corner'] - df['着順']
        df['first_to_rank'] = df['first_corner'] - df['着順']
        df['first_to_final'] = df['first_corner'] - df['final_corner']
        
        #開催場所
        df['開催'] = df['開催'].str.extract(r'(\D+)')[0].map(place_dict).fillna('11')
        #race_type
        df['race_type'] = df['距離'].str.extract(r'(\D+)')[0].map(race_type_dict)
        #距離は10の位を切り捨てる
        df['course_len'] = df['距離'].str.extract(r'(\d+)').astype(int) // 100
        df.drop(['距離'], axis=1, inplace=True)
        #インデックス名を与える
        df.index.name = 'horse_id'
        
        #データがないものはNaにする
        df['上り'].fillna(0, inplace=True)
        
        #    '札幌':'01',  '函館':'02',  '福島':'03',  '新潟':'04',  '東京':'05', 
        #    '中山':'06',  '中京':'07',  '京都':'08',  '阪神':'09',  '小倉':'10'

        #独自追加 基準値から3Fの差を出す
        up_3_halong = 0.0
        if df['開催'].iloc[0] == '01':
            if df['馬場'].iloc[0] == '良':
                if df['course_len'].iloc[0] == 12:
                    up_3_halong = 10
                else:
                    up_3_halong = 100
            else:
                 up_3_halong = 200
        else:
             up_3_halong = 300

        df['up_3halong'] = up_3_halong
        
        self.horse_results = df
        self.target_list = ['着順', '賞金', '着差', 'first_corner', 'final_corner',
                            'first_to_rank', 'first_to_final','final_to_rank','up_3halong']

↑は条件に適した値が入るか試しにup_3_halong変数に値を入れたものです。

しかし結果を見ると全部300が入ってました。

 	course_len 	開催 	up_3halong_3R
202101010101 	12.0 	01 	300.0
202101010101 	12.0 	01 	300.0
202101010101 	12.0 	01 	300.0
202101010101 	12.0 	01 	300.0
202101010101 	12.0 	01 	300.0
... 	... 	... 	...
202109020412 	14.0 	09 	300.0
202109020412 	14.0 	09 	300.0
202109020412 	14.0 	09 	300.0
202109020412 	14.0 	09 	300.0
202109020412 	14.0 	09 	300.0

※本当はr.data_hは開催を削除しますが、確認のために残しときました。
if df['開催'].iloc[0] == '01':で札幌のレースを判定できると思ったのですが、何が悪いか分かりますでしょうか・・・??

KeshikiKeshiki

hrクラスのdfに入るのはすべてのレースですね。
この形だとgroupbyすると少し難しくなるので、ちょっと遅くなってもいいならgroupbyせずに

up_3_halong = df[['開催', '馬場', 'course_len', '上り']].apply(lambda x: self.専用の関数(x), axis=1)
df['up_3halong'] = up_3_halong

とするのが簡単かと思います。
xにはdf[['開催', '馬場', 'course_len', '上り']]の各レコード(Series型)が入りますので、専用の関数でif x['開催'] == '01':という感じでやります。returnは「基準値と3Fの差」の値にします。
前の投稿では「結果をマージ」と書きましたが、up_3_halongはSeries型になるのでmergeやconcatではなく代入でOKです。

akirak1108akirak1108

Keshiki様>
 何度もありがとうございました。おかげさまでやりたいことがようやくでき、開催場所、馬場、コース種類、コース長さ のそれぞれにあった基準タイムを分けることが出来ました!

KeshikiKeshiki

【ちょっとしたバグ報告】
間違いがありましたらご了承ください。ご指摘いただけると幸いです。


ResultsとShutubaTableのスクレイピングについて、一部のレースでcourse_lenが2となってしまっています。例えば内2周3600mの2が引っかかってしまっているようです。以下のように変更することで修正できます。

#変更前
df['course_len'] = [int(re.findall(r'\d+', text)[0])] * len(df)
#変更後
df['course_len'] = [int(re.findall(r'\d+', text)[-1])] * len(df)


pedsのデータですが、スクレイピングの時点で重複を削除しているので、血統表の1~4代前までの同じ世代に同じ馬名があるときデータがずれてしまっています。
例) オールドフレイム(2014104728): Hail to Reasonはpeds_14に入るはずですが、peds_13に入ってしまっています。母母からのデータが存在しないため、母母父と母母母が同じNaNとなり重複扱いになってデータがずれていきます。
また、そもそも同名の別馬というのも結構いるようですので、馬名でカテゴリ変数化してしまうと別の馬であるにもかかわらず同じ値のカテゴリ変数を持つものが出てきてしまいます。
したがって、pedsのデータはhorse_idを取得するのがいいと思いますがいかがでしょうか。


ModelEvaluatorクラスのpredict_proba()内でprobaをレースごとに標準化する際のx.std()についてですが、pandasではデフォルトで不偏標準偏差の値が求まるようになっているようなので、x.std(ddof=0)として標準偏差の値にするのがいいのではないかと思いますがいかがでしょうか。

元小池元小池

①についてですが、私も同じバグを発見しました。
私は、以下のように修正しております。
やりたいことは、0番目の配列を取ることではなく、m(メートル)よりも前の数字を取り出すことなので、こっちの方がしっくりきました。
#変更前
df['course_len'] = [int(re.findall(r'\d+', text)[0])] * len(df)
#変更後
#正規表現によりmより前の数字だけを取り出す
df['course_len'] = [int(re.findall(r"(\d+)(?=m)", text)[0])] * len(df)

syunhavhisyunhavhi

y_test = test['rank']について

この式は、要するに、LGBで、的中率を最適化(=MAX)するように加重を求め、その的中率最適化モデルで、回収率を見るということであっていますか?

馬王という競馬ソフトでは、回収率を出し、特徴量を決め、手作業で、以下のような調整をして回収率が適当にちょうどいい感じにイジるという方式をやっていたのでそれから卒業したいのです。

①一番人気をカット
②馬連配当20倍以上
③一番人気の得点(ここでいう、threshold)が高い場合は、見送り

y_test=test[払い戻し累計」、として
y_testを、MAXにするように、パラメターを調整するのは難しいのでしょうか?

ahoahodanahoahodan

いつもお世話になっております。
馬番順に並んでいる調教データを着順で並んでいるrace_resultsに自分なりにあるゆる方法でmergeしようとしてもどうしても上手くいきませんでした。そこでrace_resultsをrace_idごとに馬番順に並び替えて、concatすれば簡単かなと思ったのですが、race_resultsを馬番順に並び替えることが出来ませんでした(笑)groupbyだのsortだの色々したのですが… 
どなた様かご教授頂けますでしょうか?

WakaToWakaTo

私は下のような感じでやってます。

df = df.groupby(level=0).apply(lambda x: x.sort_values('馬番'))
df.reset_index(level=0, drop=True, inplace=True)

LightGBMでは着順順のまま学習させるとリークになるという話を聞いたので並べ替えています。

ahoahodanahoahodan

ありがとうございます!
相当似た感じでやったのですがカスってました(笑)
リークの問題も確かに思いました。一番目に来るのが熱いみたいに学習するのかなとか。頭数がバラバラなので微妙ですが。そもそも馬ごとに横に学習しているイメージはありますが、縦の関係で学習しているのかどうかもよく分かってません…

jltjlt

お世話になっております。

  1. メモリ使用量について
    10 年分のデータを利用し、独自特徴量を追加したところ、メモリ不足になってしまいました。
import gc

をしておき、例えばですが下記のように要所要所でメモリ解放するのがいいかと思いました。

      self.data_p = df
      del df
      gc.collect()

ただ、これをしていいのかがわからずでアドバイスをお願いできればと存じます。
また、return で返している df については、return 後に同様の処理をするとメモリ解放がされるかご教示いただければと存じます。
例えば、以下のような処理イメージです。

    return merged_df
    del merged_df
    gc.collect()

※ 自分で試したいところなのですが、リソースのスペックが低く検証に時間がかかるため、ご存知であれば、、return してるので、意味はなさそうな気はしております、、

  1. 型変換につきまして
    Kaggle で活用されている reduce_mem_usage 関数があり、利用してみたところメモリの利用減少が認められました。
    しかし型を変換しているため、これが学習結果に関連するかを懸念に思っております。アドバイスいただければと存じます。

  2. Note Book の分割について
    上記のようにメモリ不足になってしまったため、Note Book を分割しようと思っております。

    1. スクレイピング専用
    1. 学習専用
    1. 予想専用

この際ですが、「2. 学習専用」と「3. 予想専用」が違う Note Book の場合でも、利用するデータが同じ、且つ利用するハイパーパラメータが同じであれば(学習する Note Book と 予想する Note Book) を分割しても問題なく同じ結果になるのでしょうか?

ぬめめぬめめ

第30回のコードを実装し運用していたところ以下のエラーが出てくるようになりました。
最近変更を加えたこととしては直近3週間分のレース結果をスクレイピングし追加しました。
その後このようなエラーが発生し学習が進まない状態となっています。
2021年のresults, horse_results, peds, return_resultsをスクレイピングしupdate_data関数で更新しましたが、改善されませんでした。
エラー解決の糸口かエラー解決の方法がわかる方いらっしゃったら教えていただけないでしょうか?
results.index.unique()とreturn_tables.unique()の長さは一致していました。

<ipython-input-39-7e41a6998438>:11: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
states = np.array([self.memory[index]['state'] for index in batch_indexes])

TypeError Traceback (most recent call last)
TypeError: only size-1 arrays can be converted to Python scalars

The above exception was the direct cause of the following exception:

ValueError Traceback (most recent call last)
<ipython-input-41-495cb750bdbb> in <module>
38 }
39 agent.replay_buffer.append(transition)
---> 40 agent.update_q()
41 episode_rewards.append(episode_reward)
42 if episode % 10 == 0:

<ipython-input-40-b29b4c614620> in update_q(self)
12 def update_q(self):
13 batch = self.replay_buffer.sample(self.batch_size)
---> 14 q = self.qnet(torch.tensor(np.float32(batch['states']), dtype=torch.float))
15 targetq = copy.deepcopy(q.data.numpy())
16

ValueError: setting an array element with a sequence.

yujiro02yujiro02

python初心者です。

Pedsクラスでスクレイピングを行いたいのですが、
peds_results = Peds.scrape(horse_id_list)でスクレイピングを行おうとすると
NameError: name 'horse_id_list' is not defined
となってしまいます。
Results.scrapeとHorseResults.scrapeのスクレイピングはうまくいっています。
気になるのはpickleファイルを読み込んだ時、results.pickleはLastmodifiedが更新されたのに対して、horse_results.pickleは更新されませんでした。

対処法をご教示いただけますと幸いです。

Nobu SNobu S

horse_id_listが作成されていないようですので前回スクレイピングしたresultsからhorse_id_listを作成してみてください。

horse_id_list = results['horse_id'].unique()
トッシートッシー



初めまして!Python初心者です。
Chapter03のデータ加工・前処理の部分で
r.merge_horse_results(hr, n_samples_list=[5, 9, 'all'])
r.data_h.head() #jupyterで出力
の入力でKeyError:'開催'と出てきてしまいます。
dfの列にもきちんと入れてあるのでなぜこのようなエラーが出てしまっているかわかりません。
どなたかご教授いただけないでしょうか??

Nobu SNobu S

プログレスバーを見ると処理される前にエラーが出ているようですので「開催」列がないことが原因のようですが…
この処理の前に

r.preprocessing()

を実行したと思いますが、r.data_pの中に「開催」列はありますか?

トッシートッシー

Nobuさん
返信ありがとうございます!r_data_pの中身を確認したところ、抜けていたので追加したら無事に解決しました。ありがとうございました。

わかわか

初めまして。
初歩的なことかもしれませんが、
Chapter03のデータ加工・前処理にてHorseResultsクラスで前処理を行う際にエラーが発生してしまい解決できません。


これはNaNがflort型だからエラーが起きているように見受けられますが、
距離をint型に変更すればと思ったのですが上手くいきません。
どなたかご教授いただけませんでしょうか。

Nobu SNobu S

こんにちは。
元のデータにNaNが含まれているのでしょうか?まずそれを確認したほうがいいですね。

horse_results['距離'].unique()
#例
array(['芝1800', '芝1200', '芝1500', '芝1000', 'ダ1700', 'ダ1400', 'ダ1800',
       'ダ1300', '芝2600', '芝2200',  nan , 'ダ2100', '芝2300', 'ダ2400',
       'ダ2000', 'ダ1500', 'ダ1900', 'ダ1870', 'ダ1230', '障2970', 'ダ900',
       '芝2500', '障2910', '障2890', '障2880', '芝3000', 'ダ2500', '芝1700',
       '芝1990', '芝2100'], dtype=object)

中身を確認して変換できない文字やNaNがあればそれを表示し影響がないデータなら行削除したらどうでしょう。

#NaNの行を抽出
horse_results[horse_results['距離'].isnull()]
#削除しても問題なければ行削除
horse_results.dropna(subset=['距離'],inplace=True)

もし大量にあるようなら、何か他の原因があるかもしれません。

わかわか

お返事ありがとうございます。
ご指摘頂いたとおり元データの確認をした所、NaNは含まれていませんでした。
ですが、芝という記載のみでレース距離の記載がない項目がありました。
これがエラーの原因だとあたりを付け、対象の行を削除し確認しましたらエラー解消出来ました。
少ない情報で色々ご指摘頂きましてありがとうございます

oshioshi

深層強化学習の動画を参考に強化学習を試しているのですが、過学習が解消されません。
動画では報酬の設定をいい感じにすれば精度は出ていたかと思うのですが、
なにか過学習の対策になるアイデアあれば教えていただきたいです。

■モデル
入力:予想上位5頭の予測勝率 、 1/ オッズ の10要素
出力:どの馬に賭けるか
報酬:(単勝適正回収値を使って) 1 - 掛け額の総和
モデルの構成:基本的なDQN
(動画では10-16-16-16-5の構成になってたかと思いますが、過学習の対応するため、10-16-12-5として学習させてます。)

■過学習対策でやったこと
バッチサイズをあげる。
モデルの学習するパラメータを減らす(層の数を減らし、層内のパラメータも減らす)。
ドロップダウンを組み込む。
入力データに微量のノイズを載せて、学習データの水増し。

学習の回数などは動画からあまり読み取れませんでしたが、20分ほど回しているので、動画と同じくらいは学習できてるかと思います。
学習率は0.001です。
最近、強化学習を勉強しつつ試してみてるので、どこが学習にとって大事か分からないので、
他に大事なパラメータ等あれば公開します。
精度出せてる方いればご意見伺いたいです。

gomwogomwo

初めまして。
下記スレッドと同様のエラーで詰まってしまい、解決できないため質問させていただきます。

https://zenn.dev/link/comments/b621c0a7881f6e

下記のコードを実行したところ「UndefinedVariableError: name 'pred' is not defined」といいうエラーが発生しました。
(エラー内容は参照スレッドのSho_003さまと同様です。)

g_umaren = gain(me.umaren_box, X_test)

スレッドに下記の様に変更することで対処できるとありましたので、変更前のコードをコメントアウトし、変更後のコードを追記して再度実行しました。

#変更前
return pred_table[pred_table['pred']==1][['馬番', '単勝', 'score']]
#変更後
return pred_table[pred_table['pred']==1]

しかし「UndefinedVariableError: name 'pred' is not defined」というエラーが発生し解決できませんでした。

マニュアル通りに進めておりますが、抜けている手順やたりないデータ等があるため発生しているのでしょうか?

お忙しいところ恐れ入りますが、ご教示いただけますと幸いです。

Nobu SNobu S

こんにちは。
bet_only = False がないようです。
試してみてください。

#変更前
def umaren_box(self, X, threshold=0.5, n_aite=5):
        pred_table = self.pred_table(X, threshold)
#変更後
def umaren_box(self, X, threshold=0.5, n_aite=5):
        pred_table = self.pred_table(X, threshold, bet_only = False)
ミヤサカミヤサカ

素人質問で恐縮なのですが、03データ加工・前処理で書かれてある

r.merge_horse_results(hr, n_samples_list=[5, 9, 'all'])
r.data_h.head() 

を実行したのですが、画像のようにマージされてしまいます。どのように解決できますでしょうか?
よろしくお願いいたします。

めとめと

winのVScodeにてtqdmを使用した場合、エラーになる事があるみたいです。

pip install ipywidgets

で解決できそうな内容でしたが、権限に引っかかり実行できません。
VScodeを管理者権限で起動し、ipywidgetsをpip installすることで解決できます。

めとめと
html_path_list_ped = glob.glob('data/html/ped/*.bin')

をWindows下で実行すると、

['data/html/ped\\2013100731.bin',
 'data/html/ped\\2014103521.bin',
 'data/html/ped\\2015101239.bin',

と勝手におきかわってしまい
horse_id = re.findall('(?<=ped/)\d+', html_path)[0]
を通す事ができないみたいです。

ナンテコッタ・・・解決策がみつからないよ。。。

めとめと

多少、強引ではありますが、prepareData.py186行目

horse_id = re.findall('(?<=ped/)\d+', re.sub(r'\\','/',html_path))[0]

にて、対応できそうです。

あと、最終行のreturnで値が返されていないようです。以下に変更が必要です。

peds_df = pd.concat([peds[key] for key in peds], axis=1).T.add_prefix('peds_')
    return peds_df
      ↑
mororomororo

モジュールのバージョン違い等でエラーが起きるのを防ぐために、
みなさんの環境を参考にさせていただきたいです。
requirement.txtを共有していただくことは可能でしょうか。
(既にどこかの投稿にあったらすみません)
よろしくお願いいたします。

27zkq27zkq

先程書籍購入写真と共にメールを送りました!
ご確認のほどよろしくお願いいたします。

アプリ太郎アプリ太郎

はじめまして。
完全版を購入し、いつも動画で勉強させていただいています。
購入写真と、アカウント名をメールで送らせていただきました。
質問ですが、chapter5で「results_addinfo.to_pickle('results.pickle')」を実行すると、
name 'results_addinfo' is not defined のエラーが出てしまいます。
すみませんがご教授をよろしくお願いいたします。

teltel

書籍購入画面とメールを送りましたので,確認とGithubへの招待お願いいたします.

tanasasantanasasan

書籍購入画面とメールを送りましたので,確認とGithubへの招待お願いいたします.

masaakey0221masaakey0221

昨日、書籍購入画面とメールを送りましたので,確認とGithubへの招待お願いいたします.

psps

書籍購入画面とメールを送りましたので、確認とGithubへの招待お願いいたします

hiirhiir

書籍購入画面とメールを送りましたので,確認とGithubへの招待お願いいたします.

y.knsry.knsr

書籍購入画面とメールを送りましたので,確認とGithubへの招待お願いいたします.

さいとうさいとう

書籍購入画面とメールを送りましたので,確認とGithubへの招待お願いいたします.

s1720246s1720246

メールを送りましたのでGithubへの招待お願いいたします
@desacme

taimoritaimori

書籍購入画面とメールを送りましたので,確認とGithubへの招待お願いいたします.

鷹

書籍購入画面とメールを送りましたので、ご確認お願いいたします。

daisetsu1998daisetsu1998

書籍購入画面及びGithubアカウント名記載のメールを送付いたしました。
ご確認と招待をお願いいたします。

てらてら

書籍購入画面とメールを送りましたので,確認とGithubへの招待お願いいたします.

ponsoponso

書籍購入画面とメールを送りましたので、確認とGithubへの招待お願いいたします。

k也k也

書籍購入画面とメールを送りましたので,確認とGithubへの招待お願いいたします.

yamadayamada

dijzped2@gmail.com宛てにメールを送ったのですがメールを受信できないアドレスと出てしまいました。
代わりの招待を受ける方法はありますか?

tattytatty

書籍購入画面とメールを送りましたので、確認とGithubへの招待お願いいたします。

amondamond

書籍購入領収書画面とメールを送りましたので、確認とGithubへの招待お願いいたします。

MareMare

昨日、書籍購入画面とメールを送りましたので,確認とGithubへの招待お願いいたします

たかしたかし

書籍購入画面とメールを送りましたので、確認とGithubへの招待お願いいたします。

夢太郎夢太郎

書籍購入領収書画面とメールを送りましたので、確認とGithubへの招待お願いいたします。

takayanagtakayanag

昨日、書籍購入画面とメールをお送りしましたので、確認とGithubへの招待お願いいたします。

rurururu

書籍購入画面とメールを送りましたので、確認とGithubへの招待お願いいたします。

fm-phibiafm-phibia

先ほど、書籍購入領収書とメールを送りましたので、確認とGithubへの招待お願いいたします。

伊勢伊勢

本日、書籍購入の領収書のメールをお送りいたしましたので
お手数ですがご確認とGithubへの招待をお願いいたします。

gelben14gelben14

本日、書籍購入の領収書のスクショを添付した招待依頼のメールをお送り致しました。
ご確認とGithubへの招待をお願いいたします。

けいちけいち

2023年3月16日 午前0:22に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

eijiodakieijiodaki

2023年3月18日 午前7:58にメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

返信

くもくも

書籍購入領収書画面とメールを送りましたので、確認とGithubへの招待お願いいたします。

kumakiti1192kumakiti1192

はじめまして。書籍購入画面とメールをお送りさせていただきました。お手数ですが、ご確認とGithubへの招待お願いいたします。

りかおんりかおん

書籍の購入しました。
お手数ですが、Gitの招待をお願いします。

ShinyaShinya

2023年4月9日 14:58に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

yukit_cescyukit_cesc

2023年4月11日 13:55に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

TororToror

2023年4月12日 21:06に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

くまくま

2023年4月11日23:11にメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

wamoyamowamoyamo

2023年4月15日 16:29に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

erueru

2023/04/16 20:19に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

べがべが

本日、書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします

llamakonllamakon

本日、書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします

名前名前

先日、書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします

U-m@U-m@

4月26日書籍購入の領収書のメールをお送りさせていただきました。
お手数をおかけしますが、ご確認、Githubへの招待をどうぞよろしくお願いいたします。

たけのこたけのこ

2023/4/28 17:32に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

mitsumitsu

先ほど、書籍購入領収書とメールを送りましたので、確認とGithubへの招待お願いいたします。

mitsumitsu

メール確認し参加できました。ご対応ありがとうございます

toshitoshi

2023/05/02に書籍購入領収書とメールを送りましたので、確認とGithubへの招待お願いいたします。

shuichishuichi

2023/05/02に書籍購入領収書とメールを送りましたので、確認とGithubへの招待お願いいたします。

kspringkspring

2023/05/02に書籍購入領収書とメールを送りましたので、確認とGithubへの招待お願いいたします。

fereeferee

2023/05/04に書籍購入領収書とメールを送りましたので、確認とGithubへの招待お願いいたします。

toshitoshi

参加できました。ご対応ありがとうございます

やおきやおき

2023/05/05に書籍購入領収書とメールを送りましたので、確認とGithubへの招待お願いいたします。

rere

5月6日9時30分に書籍購入の領収書スクショを添付しメールを送らせていただきました。
お忙しいところ申し訳ありませんが、招待いただけますと嬉しいです。
何卒宜しくお願いします!

だいふくだいふく

先ほど書籍購入領収書とメールを送りましたので、確認とGithubへの招待お願いいたします。

ふぃふぃふぃふぃ

5月10日23時38分に書籍購入の領収書スクショを添付しメールを送らせていただきました。
お忙しいところ申し訳ありませんが、メールの確認とGithubへの招待お願いいたします。

sumithsumith

先ほど(5月20日19時20分)に書籍購入の領収書スクショを添付しメールを送らせていただきました。
お忙しいところ申し訳ありませんが、メールの確認とGithubへの招待お願いいたします。

sumithsumith

無事参加できました!招待いただきありがとうございます!!

tsts

昨日(5/24 22:33)に書籍購入の領収書スクショを添付したメールを送らせていただきました。
お忙しいところ申し訳ありませんが、メールの確認とGithubへの招待お願いいたします。

tsts

メールはご確認いただけていますでしょうか。
お忙しいところ大変恐縮ですが、どうぞよろしくお願いいたします。

KakuKaku

5月25日21時10分頃メールを送らせていただきました。
購入の証明として領収書を転送しております
お忙しいところ申し訳ありませんが、メールの確認とGithubへの招待お願いいたします。

tapayan2023tapayan2023

6月13日21時56分頃、書籍購入のスクリーンショットを添付したメールを送らせていただきました。
お忙しいところ申し訳ありませんが、メールの確認とGithubへの招待お願い致します。

kantammkantamm

6月17日14時58分頃、書籍購入の領収書を添付したメールを送りました。
お忙しいところ申し訳ありませんが、メールの確認とGithubへの招待お願い致します。

gomwogomwo

確認致しました。お忙しい中、Githubへ招待いただきありがとうございます。

stormbird1124stormbird1124

2023年6月21日 13:30頃に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

ちくわ大明神ちくわ大明神

2023年6月27日 11:04頃に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

ものつくりものつくり

2023年7月2日 0:30頃に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。
よろしくお願いいたします。

NN

7月2日12時43分に書籍購入のスクショを添付しメールを送らせていただきました。
お忙しいところ申し訳ありませんが、メールの確認とGithubへの招待お願いいたします。

tk2997tk2997

お世話になります。
7月9日(日) 15:01頃、Github招待についてのメールを送付させて頂きました。
お手隙の際、ご確認のほどよろしくお願いいたします。

jmys0jmys0

7月14日(金)23:30に、書籍購入の領収書を添付したメールを送りました。
お忙しいところ申し訳ありませんが、メールの確認とGithubへの招待お願いいたします。

AZASAZAS

7月19日 0時14分に書籍購入のスクショを添付しメールを送らせていただきました。
お手数ですが、ご確認とGithubへの招待をお願いいたします。

rezhyrezhy

7月19日 17:42に書籍購入の領収書を添付してメールを送りました。
お忙しいところ大変恐れ入りますが、ご確認とGithubへの招待をお願い致します。

ぷにぽよぷにぽよ

2023年7月25日 16:37頃に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

ダンダン

7/25 15:05に書籍購入の領収書を添付の上、メールを送信させていただきました。
お手数ですがご確認とGitHubへの招待をお願いいたします。

blacksniperblacksniper

7月29日(土) 8:55に書籍購入の領収書を添付の上、メールを送信させていただきました。
お手数ですがご確認とGitHubへの招待をお願いいたします。

hebisumanhebisuman

書籍購入の領収書を添付の上、メールを送信させていただきました。
お手数ですがご確認とGitHubへの招待をお願いいたします。

ConcertinaConcertina

2023年8月6日 19:27頃に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

シャーシャー

8月16日 18:50に書籍購入の領収書を添付してメールを送りました。
お忙しいところ大変恐れ入りますが、ご確認とGithubへの招待をお願い致します。

watanabewatanabe

8月16日 21:10頃に書籍購入の領収書を添付してメールを送りました。
お忙しいところ大変恐れ入りますが、ご確認とGithubへの招待をお願い致します。

YoheiSudaYoheiSuda

9月10日 8:50頃に書籍購入の領収書を添付してメールを送りました。
お手数ですがご確認とGithubへの正体をお願い致します。

AratakoAratako

9月10日 14時ごろに書籍購入の領収書を添付してメールを送りました。
お手数ですがご確認とGitHubコミュニティへの招待をお願い致します。

tomtom

keibaAI-v2-2-mainのソースをダウンロードし、main.ipynbに従い動かしてみています。途中まで順調に動きましたが、「6.2. 前日全レース予想」で、「ValueError: Number of features of the model must match the input. Model n_features_ is 272 and input n_features is 273」とエラーが出ました。
学習時のデータ「'data/tmp/featured_data_20220626.pickle'」と、この予想時のデータ「X」のカラムを比較したところ、「'owner_id'」のカラムの位置がちがうことと、前者に「'rank'と'date'」がの2つカラム数が多く、275と273(前者と後者)になっていることが、目につきました。
どこで、どう対処すべきか、お教えくださる方が’いらっしゃったら、幸いです。

tomtom

ご回答くださりありがとうございました。おかげさまで、クリアいたしました。

マッチマッチ

9月30日 17時ごろに書籍購入の領収書を添付してメールを送りました。
お手数ですがご確認とGitHubコミュニティへの招待をお願い致します。

てちてち

書籍購入の領収書を添付の上、メールを送信させていただきました。
お手数ですがご確認とGitHubへの招待をお願いいたします。

sgmtsgmt

keibaAI-v2-2とkeibaAI-v3の違いはなんでしょうか。

きたきた

書籍購入の領収書を添付の上、メールを送信させていただきました。
お手数ですがご確認とGitHubへの招待をお願いいたします。

エビフライエビフライ

10月14日(土) 22:45 ごろに、書籍購入のスクリーンショットを添付の上、メール送信いたしました。お手数おかけしますが、お手隙の際にご確認と招待をお願いいたします。

ショタさんショタさん

2023/10/12 23:45頃に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

kensutekensute

2023/10/24 0:40頃に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

sawasawasawasawa

2023/10/27 17:45頃に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

bizdevnotebizdevnote

2023/10/27 23:16頃に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

fillyfilly

先日、書籍購入の領収書のスクリーンショットをメールにてお送りさせていただきました。
お手数おかけして申し訳ありませんがご確認のほど、よろしくお願いいたします。

taiji0066taiji0066

11月4日(土)19:42 頃に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

はやおびはやおび

昨日、書籍購入画面とメールをお送りいたしましたので,お手数ですがご確認とGithubへの招待をお願いいたします。

tamatama

11月23日(木)20:13頃と11月24(金)21:27頃に書籍購入の画面のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

tamatama

ご招待いただきありがとうございました。

如月優空如月優空

11月29日(水)14:47 頃に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

kyon0304kyon0304

11月28日(火) 17:08頃に書籍購入の領収書のメールをお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

SS

11月29日(火) 14:57頃に書籍購入の領収書画面のスクリーンショットをメールでお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

SS

ご招待いただきありがとうございました。

chi_5rmchi_5rm

12月1日(金) 11:00頃に書籍購入の領収書のスクリーンショットをメールでお送りいたしました。
お手数ですがご確認とGithubへの招待をよろしくお願いいたします。

cherencocherenco

12月10日(金) 12:30頃に書籍購入の領収書のスクリーンショットをメールでお送りいたしました。
お手数ですがご確認とGithubへの招待をよろしくお願いいたします。

ゆうせいゆうせい

12月15日(金) 1:30頃に書籍購入の領収書のスクリーンショットをメールでお送りいたしました。
お手数ですがご確認とGithubへの招待をよろしくお願いいたします。

enjuenju

12月17日(日) 16:56頃に書籍購入の領収書画面のスクリーンショットをメールでお送りいたしましたので、
お手数ですがご確認とGithubへの招待をお願いいたします。

takapctakapc

12/21頃に書籍購入の領収書画面のスクリーンショットをメールでお送りいたしました。
お手数ですがご確認とGithubへの招待をよろしくお願いします。

山本憲太郎山本憲太郎

12/26 15時頃に書籍購入の領収書画面のスクリーンショットをメールでお送りいたしました。
お手数ですがご確認とGithubへの招待をよろしくお願いします。

のんのん

1/5 19時33分に書籍購入の領収書画面のスクリーンショットをメールでお送りいたしました。
お手数ですがご確認とGithubへの招待をよろしくお願いします。

yuma3012yuma3012

1/6 22時02分に書籍購入の領収書画面のスクリーンショットをメールで送らせていただいた者です。
お手数ですがご確認とGithubへの招待をよろしくお願いします。

taketake

1/9 14:31分に書籍購入の領収書画面のスクリーンショットをメールで送らせていただきました。
お手数ですがご確認とGithubへの招待をよろしくお願いします。

oktnoktn

1/10 23時24分に書籍購入の領収書画面のスクリーンショットをメールで送らせていただいた者です。
お手数ですがご確認とGithubへの招待をよろしくお願いします。

武蔵武蔵

1月14日(土) 21:40 ごろに、書籍購入のスクリーンショットを添付の上、メール送信いたしました。お手数おかけしますが、お手隙の際にご確認と招待をお願いいたします。

gnkmgnkm

1/15 1:04 頃に書籍購入の領収書画面のスクリーンショットをメールで送らせていただいた者です。
お手数ですがご確認とGithubへの招待をよろしくお願いします。

ro piro pi

1月28日(日) 21:00 ごろに、領収書画面のスクリーンショットを添付の上、メール送信いたしました。
お手数おかけしますが、お手隙の際にご確認とGithubへの招待をお願いいたします。

binksbinks

2月18日(日)21:45に領収書画面のスクリーンショットを添付の上、メール送信致しました。
お手隙でご確認とGitHubへの招待をお願い申し上げます。

taka1226taka1226

2月26日(月)18:33に領収書画面のスクリーンショットを添付の上、メール送信致しました。
ご確認とGitHubへの招待をお願いします。

coffee0211coffee0211

2/24(土)11:28 に領収書画面のスクリーンショットを添付の上、メールを送信いたしました。お手数おかけしますが、ご確認とGitHubへの招待をよろしくお願いいたします。

gegegegegege

2月27日(火) 16:24 に領収書画面のスクリーンショットを添付して、メールを送信いたしました。
お手数をおかけいたしますが、ご確認とGitHubへの招待をよろしくお願いいたします。

NoremNorem

2月23日(金) 19:17 に領収書画面のスクリーンショットを添付して、メールを送信いたしました。
お手数をおかけいたしますが、ご確認とGitHubへの招待をよろしくお願いいたします。

hakurakuhakuraku

3月16日(土) 22:51に領収書画面のスクリーンショットを添付して、メールを送信いたしました。
お手数をおかけいたしますが、ご確認とGitHubへの招待をよろしくお願いいたします。

hakurakuhakuraku

ご招待ありがとうございいます!勉強させていただきます!

yassun_07yassun_07

3月18日(月) 15:04に領収書画面のスクリーンショットを添付して、メールを送信いたしました。
お忙しいところ恐縮ですが、ご確認の上GitHubへの招待をよろしくお願いいたします。

machikomachiko

3月23日(土) に領収書画面のスクリーンショットを添付して、メールを送信いたしました。
お忙しいところ恐縮ですが、ご確認の上GitHubへの招待をよろしくお願いいたします。

てやきてやき

4月14日(日) 22:01に領収書画面のスクリーンショットを添付して、メールを送信いたしました。
お忙しいところ恐縮ですが、ご確認の上GitHubへの招待をよろしくお願いいたします。