Codificarea etichetelor

Lucrul cu date categoriale în Python

Kasey Jones

Research Data Scientist

Ce este codificarea etichetelor?

Noțiuni de bază:

  • Codifică fiecare categorie ca număr întreg de la 0 la n - 1, unde n este numărul de categorii
  • Codul -1 este rezervat valorilor lipsă
  • Poate reduce utilizarea memoriei
  • Utilizat frecvent în sondaje

Dezavantaj:

  • Nu este cea mai bună metodă de codificare pentru machine learning (vezi lecția următoare)
Lucrul cu date categoriale în Python

Crearea codurilor

Conversia la tip categoric și sortarea după numele producătorului

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

Utilizarea .cat.codes

used_cars['manufacturer_code'] = used_cars['manufacturer_name'].cat.codes
Lucrul cu date categoriale în Python

Verificarea rezultatului

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
Lucrul cu date categoriale în Python

Cod book-uri / dicționare de date

Un exemplu de cod book din American Housing Survey.

1 https://www.census.gov/data-tools/demo/codebook/ahs/ahsdict.html
Lucrul cu date categoriale în Python

Crearea unui cod book

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',
 ...
}
Lucrul cu date categoriale în Python

Utilizarea unui cod book

Crearea codurilor:

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

Revenirea la valorile anterioare:

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
Lucrul cu date categoriale în Python

Codificarea booleană

Găsirea tipurilor de caroserie care conțin „van":

# Code from previous lesson:
used_cars["body_type"].str.contains("van", regex=False)

Crearea unei codificări booleene:

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
Lucrul cu date categoriale în Python

Exerciții de codificare

Lucrul cu date categoriale în Python

Preparing Video For Download...