Data & Feature Engineering

Encoding Categorical Variables

Converting non-numeric strings and categories into model-ready numerical matrices without introducing false ordinal rankings.

🟢 beginner4 min readfeatures
Categorical Encoding transforms string labels and discrete variables into numerical formats. Low-cardinality features use One-Hot Encoding (binary indicator columns) or Ordinal Encoding (integer mapping for ordered data). High-cardinality features use Target Encoding, Frequency Encoding, or Entity Embeddings. Selecting the wrong encoding introduces artificial distance assumptions or causes high-dimensional sparse matrix explosions.

Categorical Encoding Decision Tree

                          Is the Categorical Feature Ordered (Ordinal)?
                                 /                            \
                              Yes                              No
                              /                                  \
                    Use Ordinal Encoding            Is Cardinality High (> 15 values)?
              ('Small'=0, 'Med'=1, 'Large'=2)              /                     \
                                                         No                      Yes
                                                        /                          \
                                              Use One-Hot Encoding         Target / Frequency Encoding
                                              ([1,0,0], [0,1,0])           / Entity Embeddings

Encoding Methods Comparison

Encoding MethodMechanicsBest ForOutput DimPrimary Risk
One-HotBinary 1/0 column per categoryLow-cardinality nominal dataCC columnsSparse matrix explosion for large CC
OrdinalAssigns integer 0 to C−1C-1Ordered categories (Education, Size)1 columnImposes false distance on nominal data
Frequency / CountReplaces category with frequency countMedium/High cardinality features1 columnCollapses categories with identical counts
Target EncodingReplaces category with target mean yˉc\bar{y}_cHigh-cardinality features in GBDTs1 columnTarget Leakage / Overfitting
Entity EmbeddingsLearned dense vector via Neural NetHigh-cardinality features in Deep Learningkk-dim vectorRequires neural net training step

The Dummy Variable Trap in Linear Regression

When using One-Hot encoding with a bias intercept in Linear Regression:

∑j=1Cxonehot,j=1.0=Bias Intercept Vector\sum_{j=1}^C x_{\text{onehot}, j} = 1.0 = \text{Bias Intercept Vector}

This creates perfect multicollinearity (rank(X)<d\text{rank}(X) < d). Invertibility fails for (XTX)−1(X^T X)^{-1}.

Fix: Drop one binary column (Dummy Variable Encoding), retaining C−1C-1 columns. The baseline dropped category is absorbed into the bias intercept bb.

Say this out loud

"Categorical encoding converts discrete strings into model inputs. We use Ordinal Encoding only when natural ordering exists (e.g. education level). For un-ordered categories, we use One-Hot Encoding for low-cardinality features, dropping one column for linear models to avoid the dummy variable trap. For high-cardinality features like ZIP codes, we use Out-of-Fold Target Encoding or learned Entity Embeddings."

Follow-ups to expect

Check yourself

Question 1 of 3

Why is applying Ordinal Encoding (mapping 'Red'=0, 'Green'=1, 'Blue'=2) dangerous for linear models and neural networks?

More in Data & Feature Engineering

See all →
Feature Engineering Fundamentals4 minSQL Questions in ML Interviews5 minScaling & Normalization5 min