Label encoding

Lavorare con i dati categorici in Python

Kasey Jones

Research Data Scientist

Cos’è il label encoding?

Basi:

  • Assegna a ogni categoria un intero da 0 a n - 1, dove n è il numero di categorie
  • Il codice -1 è riservato ai valori mancanti
  • Può ridurre l’uso di memoria
  • Spesso usata nei sondaggi

Svantaggio:

  • Non è il metodo migliore per il machine learning (vedi prossima lezione)
Lavorare con i dati categorici in Python

Creare i codici

Converti a categorico e ordina per produttore

used_cars['manufacturer_name'] = used_cars['manufacturer_name'].astype("category")

Usa .cat.codes

used_cars['manufacturer_code'] = used_cars['manufacturer_name'].cat.codes
Lavorare con i dati categorici in Python

Verifica output

print(used_cars[['manufacturer_name', 'manufacturer_code']])
      manufacturer_name  manufacturer_code
0                Subaru                 45
1                Subaru                 45
2                Subaru                 45
...                 ...                ...
38526          Chrysler                  8
38527          Chrysler                  8
Lavorare con i dati categorici in Python

Dizionari dei codici / data dictionary

Esempio di dizionario dei codici dall’American Housing Survey.

1 https://www.census.gov/data-tools/demo/codebook/ahs/ahsdict.html
Lavorare con i dati categorici in Python

Creare un dizionario dei codici

codes = used_cars['manufacturer_name'].cat.codes
categories = used_cars['manufacturer_name']
name_map = dict(zip(codes, categories))

print(name_map)
{45: 'Subaru',
 24: 'LADA',
 12: 'Dodge',
 ...
}
Lavorare con i dati categorici in Python

Usare un dizionario dei codici

Creare i codici:

used_cars['manufacturer_code'] = used_cars['manufacturer_name'].cat.codes

Ripristinare i valori originali:

used_cars['manufacturer_code'].map(name_map)
0        Acura
1        Acura
2        Acura
...
1 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.map.html
Lavorare con i dati categorici in Python

Codifica booleana

Trova tutti i tipi di carrozzeria che contengono "van":

# Codice dalla lezione precedente:
used_cars["body_type"].str.contains("van", regex=False)

Crea una codifica booleana:

used_cars["van_code"] = np.where(
  used_cars["body_type"].str.contains("van", regex=False), 1, 0)

used_cars["van_code"].value_counts()
0    34115
1     4416
Name: van_code, dtype: int64
Lavorare con i dati categorici in Python

Esercizio di codifica

Lavorare con i dati categorici in Python

Preparing Video For Download...