kaggleの雑記

kaggleのコンペから方向と距離についての特徴量生成を学ぶ

特徴量生成のコードを読み解く、その1

https://www.kaggle.com/enzoamp/nfl-lightgbm

このNotebookのコードを解読していきます。コードの作成者はLorenzo Ampilさんです。

yardline = update_yardline(df)

def update_yardline(df):
    new_yardline = df[df['NflId'] == df['NflIdRusher']]
    new_yardline['YardLine'] = new_yardline[['PossessionTeam','FieldPosition','YardLine']].apply(lambda x: new_line(x[0],x[1],x[2]), axis=1)
    new_yardline = new_yardline[['GameId','PlayId','YardLine']]

    return new_yardline
  • NflId – a unique identifier of the player – プレイヤーのID
  • NflIdRusher – the NflId of the rushing player – 走っているプレイヤーのID?

1行目でプレイヤーのIDと走っているプレイヤーが同じレコードだけを抜粋してnew_yardlineとしている。

2行目はまず下記に注目する。

new_yardline[['PossessionTeam','FieldPosition','YardLine']]

この処理で

  • PossessionTeam – team with possession – ボール持っているチーム?
  • FieldPosition – which side of the field the play is happening on – どちらのチームポジションでおきているか?
  • YardLine – the yard line of the line of scrimmage – 何ヤード進んでいるか(負の値はとらない)

のカラムを持つデータを作成しています。これに対して

.apply(lambda x: new_line(x[0],x,x), axis=1)

new_line関数を当てて、新しいカラムを追加します。

def new_line(rush_team, field_position, yardline):
    if rush_team == field_position:
        # offense starting at X = 0 plus the 10 yard endzone plus the line of scrimmage
        return 10.0 + yardline
    else:
        # half the field plus the yards between midfield and the line of scrimmage
        return 60.0 + (50 - yardline)

yardline(元データのYardLine)にはmaxで50の値が入ります。自陣だったら10+yardline、敵陣だったら60 + (50 – yardline)です。これで自陣からの距離に直しています。

最後に3行目で[‘GameId’,’PlayId’,’YardLine’]だけのデータに抜粋して返します。

kaggleのNFLコンペから、選手の行動・方向に関する特徴量生成を学ぶ特徴量生成のコードを読み解く、その2 https://www.kaggle.com/enzoamp/nfl-lightgbm こ...
kaggleのNFLコンペから、ランナーとその他の選手の切り分けた特徴量生成を学ぶ特徴量生成のコードを読み解く、その3 https://www.kaggle.com/enzoamp/nfl-lightgbm こ...
kaggleからpandasで縦のデータから統計データを取得する方法を学ぶ特徴量生成のコードを読み解く、その4 https://www.kaggle.com/enzoamp/nfl-lightgbm こ...
【kaggle】NFL Big Data Bowl のlightgbmを利用したコードの特徴量生成を読み解く、その5特徴量生成のコードを読み解く、その5 https://www.kaggle.com/enzoamp/nfl-lightgbm こ...
kaggleのNFLコンペから学ぶ、ポジションの欠損値の埋め方【事例】特徴量生成のコードを読み解く、その6 https://www.kaggle.com/enzoamp/nfl-lightgbm こ...

 

ABOUT ME
hirayuki
今年で社会人3年目になります。 日々体当たりで仕事を覚えています。 テーマはIT・教育です。 少しでも技術に親しんでもらえるよう、noteで4コマ漫画も書いています。 https://note.mu/hirayuki