Umgang mit kategorialen Variablen

Feature Engineering für Machine Learning in Python

Robert O'Callaghan

Director of Data Science, Ordergroove

Kategoriale Features kodieren

Feature Engineering für Machine Learning in Python

Kategoriale Features kodieren

Feature Engineering für Machine Learning in Python

Kategoriale Features kodieren

  • One-Hot-Encoding
  • Dummy-Encoding
Feature Engineering für Machine Learning in Python

One-Hot-Encoding

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
Feature Engineering für Machine Learning in Python

Dummy-Encoding

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
Feature Engineering für Machine Learning in Python

One-hot vs. Dummies

  • One-Hot-Encoding: gut erklärbare Features
  • Dummy-Encoding: nötige Infos ohne Duplikate
Feature Engineering für Machine Learning in Python
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
Feature Engineering für Machine Learning in Python

Spalten begrenzen

counts = df['Country'].value_counts()
print(counts)
'USA'      8
'UK'       6
'India'    2
'France'   1
Name: Country, dtype: object
Feature Engineering für Machine Learning in Python

Spalten begrenzen

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
Feature Engineering für Machine Learning in Python

Jetzt kannst du mit kategorialen Variablen umgehen

Feature Engineering für Machine Learning in Python

Preparing Video For Download...