kaggleの雑記

【kaggle】NFL Big Data Bowl のlightgbmを利用したコードの特徴量生成を読み解く、その5

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

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

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

defense_features

kaggleからpandasで縦のデータから統計データを取得する方法を学ぶ特徴量生成のコードを読み解く、その4 https://www.kaggle.com/enzoamp/nfl-lightgbm こ...

でやったことを敵チームに関してフォーカスしただけです。

def defense_features(df):
    rusher = df[df['NflId'] == df['NflIdRusher']][['GameId','PlayId','Team','X','Y']]
    rusher.columns = ['GameId','PlayId','RusherTeam','RusherX','RusherY']

    defense = pd.merge(df,rusher,on=['GameId','PlayId'],how='inner')
    defense = defense[defense['Team'] != defense['RusherTeam']][['GameId','PlayId','X','Y','RusherX','RusherY']]
    defense['def_dist_to_back'] = defense[['X','Y','RusherX','RusherY']].apply(lambda x: euclidean_distance(x[0],x[1],x[2],x[3]), axis=1)

    defense = defense.groupby(['GameId','PlayId'])\
                        .agg({'def_dist_to_back':['min','max','mean','std']})\
                        .reset_index()
    defense.columns = ['GameId','PlayId','def_min_dist','def_max_dist','def_mean_dist','def_std_dist']

    return defense

1, 2行目

rusherのレコードに限定して、チーム、位置X, Yをrusherのものとしてカラム名を振り直します。

3, 4, 5行目

ディフェンスとのそれぞれの距離をユークリッド距離で計算します。

6, 7行目

ディフェンスとの距離について最大値、最小値、平均、標準偏差を求めて、データとして返す。

kaggleのコンペから方向と距離についての特徴量生成を学ぶ特徴量生成のコードを読み解く、その1 https://www.kaggle.com/enzoamp/nfl-lightgbm こ...
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コンペから学ぶ、ポジションの欠損値の埋め方【事例】特徴量生成のコードを読み解く、その6 https://www.kaggle.com/enzoamp/nfl-lightgbm こ...
ABOUT ME
hirayuki
今年で社会人3年目になります。 日々体当たりで仕事を覚えています。 テーマはIT・教育です。 少しでも技術に親しんでもらえるよう、noteで4コマ漫画も書いています。 https://note.mu/hirayuki