カテゴリ変数の扱い

Python で学ぶ Machine Learning のための特徴量エンジニアリング

Robert O'Callaghan

Director of Data Science, Ordergroove

カテゴリ特徴量のエンコード

Python で学ぶ Machine Learning のための特徴量エンジニアリング

カテゴリ特徴量のエンコード

Python で学ぶ Machine Learning のための特徴量エンジニアリング

カテゴリ特徴量のエンコード

  • ワンホットエンコーディング
  • ダミーエンコーディング
Python で学ぶ Machine Learning のための特徴量エンジニアリング

ワンホットエンコーディング

pd.get_dummies(df, columns=['Country'], 
               prefix='C')
    C_France    C_India    C_UK    C_USA
0          0          1       0        0
1          0          0       0        1
2          0          0       1        0
3          0          0       1        0
4          1          0       0        0
Python で学ぶ Machine Learning のための特徴量エンジニアリング

ダミーエンコーディング

pd.get_dummies(df, columns=['Country'],
               drop_first=True, prefix='C')
     C_India    C_UK    C_USA
0          1       0        0
1          0       0        1
2          0       1        0
3          0       1        0
4          0       0        0
Python で学ぶ Machine Learning のための特徴量エンジニアリング

ワンホット vs ダミー

  • ワンホットエンコーディング: 説明しやすい特徴量
  • ダミーエンコーディング: 重複なく必要情報を保持
Python で学ぶ Machine Learning のための特徴量エンジニアリング
Index Sex
0 Male
1 Female
2 Male
Index Male Female
0 1 0
1 0 1
2 1 0
Index Male
0 1
1 0
2 1
Python で学ぶ Machine Learning のための特徴量エンジニアリング

列数を抑える

counts = df['Country'].value_counts()
print(counts)
'USA'      8
'UK'       6
'India'    2
'France'   1
Name: Country, dtype: object
Python で学ぶ Machine Learning のための特徴量エンジニアリング

列数を抑える

mask = df['Country'].isin(counts[counts < 5].index)

df['Country'][mask] = 'Other'
print(pd.value_counts(colors))
'USA'      8
'UK'       6
'Other'    3
Name: Country, dtype: object
Python で学ぶ Machine Learning のための特徴量エンジニアリング

これでカテゴリ変数に対応できる

Python で学ぶ Machine Learning のための特徴量エンジニアリング

Preparing Video For Download...