लेबल एन्कोडिंग

Python में Categorical Data के साथ काम करना

Kasey Jones

Research Data Scientist

लेबल एन्कोडिंग क्या है?

बेसिक्स:

  • हर श्रेणी को 0 से n - 1 तक एक integer कोड दें, जहाँ n श्रेणियों की संख्या है
  • किसी भी missing value के लिए -1 आरक्षित रहता है
  • मेमोरी बचा सकता है
  • सर्वे में अक्सर उपयोग होता है

कमज़ोरी:

  • मशीन लर्निंग के लिए यह सर्वोत्तम एन्कोडिंग नहीं है (अगले पाठ में देखें)
Python में Categorical Data के साथ काम करना

कोड बनाना

categorical में बदलें और manufacturer name से sort करें

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

.cat.codes का उपयोग करें

used_cars['manufacturer_code'] = used_cars['manufacturer_name'].cat.codes
Python में Categorical Data के साथ काम करना

आउटपुट जाँचें

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
Python में Categorical Data के साथ काम करना

कोड बुक्स / डेटा डिक्शनरीज़

American Housing Survey की एक उदाहरण code book.

1 https://www.census.gov/data-tools/demo/codebook/ahs/ahsdict.html
Python में Categorical Data के साथ काम करना

कोड बुक बनाना

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',
 ...
}
Python में Categorical Data के साथ काम करना

कोड बुक का उपयोग

कोड बनाना:

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

पुराने मानों पर लौटना:

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
Python में Categorical Data के साथ काम करना

बूलियन कोडिंग

सभी body types ढूँढें जिनमें "van" आता है:

# पिछले पाठ का कोड:
used_cars["body_type"].str.contains("van", regex=False)

एक boolean कोडिंग बनाएँ:

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
Python में Categorical Data के साथ काम करना

एन्कोडिंग अभ्यास

Python में Categorical Data के साथ काम करना

Preparing Video For Download...