Label Encoding
What is label encoding?
Section titled “What is label encoding?”Label encoding converts categories into integers:
- high → 2
When it’s OK
Section titled “When it’s OK”-
For ordinal categories (where order matters):
- low < medium < high
-
For tree models sometimes (but still be careful)
When to avoid it
Section titled “When to avoid it”For nominal categories (no order):
- city, color, country
Label encoding may trick models into believing an order exists.
Example: ordinal encoding (manual)
Section titled “Example: ordinal encoding (manual)”import pandas as pd
df = pd.DataFrame({"priority": ["low", "high", "medium", "low"]})
mapping = {"low": 0, "medium": 1, "high": 2}
df["priority_code"] = df["priority"].map(mapping)
print(df)Using scikit-learn LabelEncoder
Section titled “Using scikit-learn LabelEncoder”LabelEncoder is mainly designed for encoding target labels, not features.
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
y = ["spam", "ham", "ham", "spam"]
print(le.fit_transform(y))
print(le.classes_)Use:
- One-hot encoding for nominal categories
- Ordinal mapping for ordered categories
Visualize it
Section titled “Visualize it”flowchart LR A["priority column
(low, medium, high)"] --> B["mapping: low->0, medium->1, high->2"] B --> C["priority_code column
(0, 1, 2)"]
🧪 Try It Yourself
Section titled “🧪 Try It Yourself”Exercise 1 – Encode with a manual mapping
Section titled “Exercise 1 – Encode with a manual mapping”Exercise 2 – Encode with scikit-learn’s LabelEncoder
Section titled “Exercise 2 – Encode with scikit-learn’s LabelEncoder”Exercise 3 – Get codes from a category dtype
Section titled “Exercise 3 – Get codes from a category dtype”For categories with no natural order, prefer One-Hot Encoding so the model doesn’t assume a ranking that isn’t real.
pch.coffeeTagline
pch.coffeeCtapch.feedbackHeading
pch.feedbackSubheading