CodeBlanks Logo Icon CodeBlanks

Label encoding

Categorical data is converted to numeric values with LabelEncoder.

LabelEncoder

Models work with numbers; text labels must be encoded as integers. LabelEncoder gives each distinct value 0, 1, 2... in alphabetical order:

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
y = le.fit_transform(["kedi", "köpek", "kedi", "kuş"])
print(y)                 # [0 1 0 2]
print(le.classes_)       # ['kedi' 'köpek' 'kuş']
print(le.inverse_transform([2]))  # ['kuş']

LabelEncoder is meant for labels (y).

One-hot encoding

Unordered categorical features are expanded into a separate 0/1 column for each value:

from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder()
X = enc.fit_transform([["kırmızı"], ["mavi"], ["kırmızı"]]).toarray()
print(X)   # [[1. 0.] [0. 1.] [1. 0.]]
print(enc.categories_)

In pandas, pd.get_dummies(df, columns=["renk"]) does the same. For ordered categories (small < medium < large) OrdinalEncoder is suitable.

Practice Encode the labels

Encode the renk list with LabelEncoder and print the result. Then print the length of classes_.

Starter code

model.py
from sklearn.preprocessing import LabelEncoder

renk = ["yeşil", "mavi", "yeşil", "sarı", "mavi"]

# buraya yaz

Sample solution

model.py
from sklearn.preprocessing import LabelEncoder

renk = ["yeşil", "mavi", "yeşil", "sarı", "mavi"]

le = LabelEncoder()
print(le.fit_transform(renk))
print(len(le.classes_))

Expected output

[2 0 2 1 0]
3

Questions and answers

Review the lesson questions together with their answers. To test yourself, solve the lesson interactively.

1 Why can applying LabelEncoder to a feature column (X) be a problem?

  • It isn't a problem
  • The numbers imply a false order (0 &lt; 1 &lt; 2) Correct answer
  • It is very slow
  • It doesn't accept text

Explanation: Linear models treat "kuş" (2) as greater than "kedi" (0); one-hot is used for unordered categories.

2 Turn the encoded numbers back into text.

Question
adlar = le.____([0, 2])
Answer
adlar = le.inverse_transform([0, 2])

Explanation: inverse_transform turns the model's predictions into readable labels.

3 Match the encoders.

Term Meaning
LabelEncoder Labels to integers
OneHotEncoder A 0/1 column per value
OrdinalEncoder Ordered categories
get_dummies One-hot with pandas

All lessons in Beginner

13 Project: Classification

  1. Preparing data
  2. Training model
  3. Prediction
  4. Evaluation