kaggleの雑記

kaggleのNFLコンペから、ランナーとその他の選手の切り分けた特徴量生成を学ぶ

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

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

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

back_features(df)

def back_features(df):
    carriers = df[df['NflId'] == df['NflIdRusher']][['GameId','PlayId','NflIdRusher','X','Y','Orientation','Dir','YardLine']]
    carriers['back_from_scrimmage'] = carriers['YardLine'] - carriers['X']
    carriers['back_oriented_down_field'] = carriers['Orientation'].apply(lambda x: back_direction(x))
    carriers['back_moving_down_field'] = carriers['Dir'].apply(lambda x: back_direction(x))
    carriers = carriers.rename(columns={'X':'back_X',
                                        'Y':'back_Y'})
    carriers = carriers[['GameId','PlayId','NflIdRusher','back_X','back_Y','back_from_scrimmage','back_oriented_down_field','back_moving_down_field']]

    return carriers

1行目

carriersに元データのNflIdとNflIdRusherが同じ(つまりボールを持っている人)の’GameId’,’PlayId’,’NflIdRusher’,’X’,’Y’,’Orientation’,’Dir’,’YardLine’をDataFrameとして投入している。

2, 3, 4行目

新しい特徴量を3種類生成しようとしている。

  1. back_from_scrimmage (Yardline – X)
  2. back_oriented_down_field
  3. back_moving_down_field

(このタイミングで、自分の中ではっきり意識できたのですが、Xはプレイヤーの位置、Yardlineは何ヤードの位置でスクラムしているか(のはず))

back_from_scrimmageはスクラムの位置からボールを持っているプレイヤーまでの距離(のはず)

def back_direction(orientation):
    if orientation > 180.0:
        return 1
    else:
        return 0

back_oriented_down_fieldとback_moving_down_fieldは選手の角度と選手の動きの角度、これがdonwだったら(180〜360度だったら)「1」を、そうでなければ「0」にしているようです。

ここはこんなざっくりで大丈夫なのか気になりますが、こうなっています。

5, 6, 7行目

XとYをback_Xとback_Yに置き直しています。そしてこの2つを含む新しく生成したカラム5つをcarriersと言うDataFrameで返しています。

kaggleのコンペから方向と距離についての特徴量生成を学ぶ特徴量生成のコードを読み解く、その1 https://www.kaggle.com/enzoamp/nfl-lightgbm こ...
kaggleのNFLコンペから、選手の行動・方向に関する特徴量生成を学ぶ特徴量生成のコードを読み解く、その2 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