Menangani Variabel Kategorikal

Rekayasa Fitur untuk Machine Learning di Python

Robert O'Callaghan

Director of Data Science, Ordergroove

Mencoding fitur kategorikal

Rekayasa Fitur untuk Machine Learning di Python

Mencoding fitur kategorikal

Rekayasa Fitur untuk Machine Learning di Python

Mencoding fitur kategorikal

  • One-hot encoding
  • Dummy encoding
Rekayasa Fitur untuk Machine Learning di 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
Rekayasa Fitur untuk Machine Learning di 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
Rekayasa Fitur untuk Machine Learning di Python

One-hot vs. dummy

  • One-hot encoding: Fitur mudah dijelaskan
  • Dummy encoding: Informasi inti tanpa duplikasi
Rekayasa Fitur untuk Machine Learning di Python
Index Jenis kelamin
0 Laki-laki
1 Perempuan
2 Laki-laki
Index Laki-laki Perempuan
0 1 0
1 0 1
2 1 0
Index Laki-laki
0 1
1 0
2 1
Rekayasa Fitur untuk Machine Learning di Python

Membatasi jumlah kolom

counts = df['Country'].value_counts()
print(counts)
'USA'      8
'UK'       6
'India'    2
'France'   1
Name: Country, dtype: object
Rekayasa Fitur untuk Machine Learning di Python

Membatasi jumlah kolom

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
Rekayasa Fitur untuk Machine Learning di Python

Kini Anda dapat menangani variabel kategorikal

Rekayasa Fitur untuk Machine Learning di Python

Preparing Video For Download...