独学でプログラミングを学んでみた

python初心者がテックブログを書いてみた

python初学者が競馬予測をしてみたpart3(part1,2の変更点)

皆さんこんにちは、KHnodeと申します。
第三回です。
前回の記事はこちらから、まだ見ていない人は見ていただけると嬉しいです。
kashiwapro.hatenablog.com

##################################################################

前回まで1競馬予測のコードを書いてきましたが、今回はこの2週間で変更したことを書いていこうと思います。

①目的変数の変更
前の目的変数は確定順位の1,2,3着を0-1変数に直したものを目的変数としていましたが
「オッズが5倍かつ確定順位の1,2,3着を0-1変数に直したもの」に変更しました。
(オッズの倍率は変更有)

変更理由に関しては2つあります。
複勝で賭けるため少しうまみのあるオッズを買いたいから
〇説明にオッズと人気を合わせた特徴量の作成を行いたいから

1つ目の理由は、的中率よりも回収率が重要と筆者は考えているので単勝オッズ1.何倍の複勝を買ってもほぼ元返しになってしまうため、1度負けてしまうと回収不可能になってしまうからです。
2つ目の理由は、説明変数が少なくスコアが68%とかなり低いのでスコア向上のためです。

目的変数のコードはこちらです。(無駄なコードが多い気がします)

  import pandas as pd

    df = pd.read_excel(data)

    d_ranking = lambda x: 1 if x in [1, 2, 3] else 0
    df['確定フラグ'] = df['確定順位'].map(d_ranking)

    oos = lambda x: 1 if x > 5.0 else 0
    df['オッズフラグ'] = df['オッズ'].map(oos)

    df.loc[(df['確定フラグ'] == 1) & (df['オッズフラグ'] == 1), 'メインフラグ'] = "1"
    df.loc[(df['確定フラグ'] == 0) | (df['オッズフラグ'] == 0), 'メインフラグ'] = "0"

    df = df.drop(['確定フラグ', 'オッズフラグ'], axis=1)

②説明変数の変更

〇過去の戦績をのせる。(レース場、オッズ、人気、着順など)
〇特徴量の作成をする。

過去の戦績に関しては思った以上に難航しているので次週にのせれたらと思います(がんばります)
特徴量は今のところはオッズと人気で作成しようと考えています。

ではまた