特徴量エンジニアリング

Pythonで挑むKaggleコンペティション

Yauhen Babakhin

Kaggle Grandmaster

ソリューションのワークフロー

 

 

ソリューションのワークフロー

Pythonで挑むKaggleコンペティション

モデリング段階

  モデリング段階の構成要素

Pythonで挑むKaggleコンペティション

モデリング段階

  モデリング段階の構成要素

Pythonで挑むKaggleコンペティション

モデリング段階

  ローカル検証

Pythonで挑むKaggleコンペティション

特徴量エンジニアリング

 

特徴量エンジニアリングの模式図

Pythonで挑むKaggleコンペティション

特徴量エンジニアリング

 

特徴量エンジニアリングの模式図

Pythonで挑むKaggleコンペティション

特徴量の種類

 

  • 数値
  • カテゴリ
  • 日時
  • 座標
  • テキスト
  • 画像
Pythonで挑むKaggleコンペティション

特徴量の作成

# 学習データとテストデータを結合
data = pd.concat([train, test])
# data DataFrame に新しい特徴量を作成...
# 学習とテストに戻す
train = data[data.id.isin(train.id)]
test = data[data.id.isin(test.id)]
Pythonで挑むKaggleコンペティション

算術的特徴量

# Two Sigma Connect コンペ
two_sigma.head(1)
      id     bathrooms  bedrooms price interest_level
0     10     1.5        3        3000  medium
# 算術的特徴量
two_sigma['price_per_bedroom'] = two_sigma.price / two_sigma.bedrooms
two_sigma['rooms_number'] = two_sigma.bedrooms + two_sigma.bathrooms
Pythonで挑むKaggleコンペティション

日時特徴量

# 需要予測チャレンジ
dem.head(1)
          id           date store  item  sales
0     100000     2017-12-01     1     1     19
# 文字列の date を datetime 型に変換
dem['date'] = pd.to_datetime(dem['date'])
Pythonで挑むKaggleコンペティション

日時特徴量

# 年の特徴
dem['year'] = dem['date'].dt.year

# 月の特徴 dem['month'] = dem['date'].dt.month
# 週の特徴 dem['week'] = dem['date'].dt.weekofyear
# 日の特徴
dem['dayofyear'] = dem['date'].dt.dayofyear
dem['dayofmonth'] = dem['date'].dt.day
dem['dayofweek'] = dem['date'].dt.dayofweek
date           year  month   week
2017-12-01     2017     12     48
2017-12-02     2017     12     48
2017-12-03     2017     12     48
2017-12-04     2017     12     49

 

date      dayofyear  dayofmonth dayofweek
2017-12-01  335      1          4
2017-12-02  336      2          5
2017-12-03  337      3          6
2017-12-04  338      4          0
Pythonで挑むKaggleコンペティション

練習しましょう!

Pythonで挑むKaggleコンペティション

Preparing Video For Download...