¿Qué es Ordinal Encoding?
Ordinal Encoding es una técnica de transformación de datos utilizada para convertir variables categóricas en valores numéricos cuando existe un orden o jerarquía natural entre las categorías.
Muchos algoritmos de Machine Learning trabajan exclusivamente con datos numéricos y no pueden procesar directamente valores de texto como “Bajo”, “Medio” o “Alto”. Ordinal Encoding resuelve este problema asignando un número entero a cada categoría respetando su orden lógico.
Por ejemplo:
| Nivel de satisfacción | Valor codificado |
|---|---|
| Bajo | 1 |
| Medio | 2 |
| Alto | 3 |
En este caso, el modelo puede interpretar correctamente que “Alto” representa una categoría superior a “Medio” y “Medio” es superior a “Bajo”.

¿Cómo funciona Ordinal Encoding?
El proceso consiste en:
- Identificar una variable categórica ordinal.
- Definir el orden correcto de las categorías.
- Asignar un valor numérico a cada nivel.
- Sustituir las categorías originales por sus códigos numéricos.
Supongamos la siguiente variable:
| Talla |
|---|
| Pequeña |
| Mediana |
| Grande |
| Extra Grande |
Se puede codificar como:
| Talla | Código |
|---|---|
| Pequeña | 1 |
| Mediana | 2 |
| Grande | 3 |
| Extra Grande | 4 |
De esta forma se conserva la relación jerárquica entre categorías.
Ejemplo práctico
Imaginemos un conjunto de datos de evaluación de clientes:
| Valoración |
|---|
| Mala |
| Regular |
| Buena |
| Excelente |
Aplicando Ordinal Encoding:
| Valoración | Código |
|---|---|
| Mala | 1 |
| Regular | 2 |
| Buena | 3 |
| Excelente | 4 |
Ahora la variable puede utilizarse directamente en algoritmos de Machine Learning.
¿Por qué es necesario codificar variables categóricas?
Los modelos matemáticos trabajan con números y operaciones aritméticas. Cuando una variable contiene texto el algoritmo no puede calcular distancias, correlaciones o coeficientes. La codificación transforma estas categorías en valores numéricos manteniendo la información relevante para el modelo.
¿Cuándo utilizar Ordinal Encoding?
Esta técnica es recomendable cuando:
- Existe una relación jerárquica entre categorías.
- El orden de las categorías tiene significado.
- Se desea conservar la información de ranking.
- Las categorías representan niveles o escalas.
Ejemplos comunes:
- Nivel educativo.
- Grado de satisfacción.
- Clasificación de riesgo.
- Prioridad de incidencias.
- Tallas de ropa.
- Nivel de experiencia profesional.
- Escalas de calidad.
- Calificaciones académicas.
Casos donde NO debe utilizarse
No es recomendable cuando las categorías no tienen un orden natural.
Por ejemplo:
| Color |
|---|
| Rojo |
| Azul |
| Verde |
Si se codifican como:
| Color | Código |
|---|---|
| Rojo | 1 |
| Azul | 2 |
| Verde | 3 |
el modelo podría interpretar incorrectamente que Verde es “mayor” que Azul y Azul es “mayor” que Rojo. En estos casos suele ser preferible utilizar One-Hot Encoding.
Beneficios de Ordinal Encoding
Entre sus principales beneficios destacan:
- Convierte variables categóricas en datos numéricos.
- Conserva el orden natural de las categorías.
- Reduce la dimensionalidad.
- Genera una única columna por variable.
- Es fácil de interpretar.
- Tiene bajo coste computacional.
- Resulta eficiente para grandes volúmenes de datos.
Ventajas de Ordinal Encoding
Las principales ventajas son:
- Implementación sencilla.
- Consumo mínimo de memoria.
- Compatible con prácticamente cualquier algoritmo.
- Mantiene la información jerárquica.
- Evita la explosión de dimensiones.
- Facilita el procesamiento de grandes datasets.
Además, al generar una sola columna codificada, resulta especialmente útil cuando existen muchas observaciones.
Desventajas de Ordinal Encoding
También presenta algunas limitaciones:
- Puede introducir relaciones numéricas artificiales.
- Algunos algoritmos interpretan las diferencias entre categorías como distancias reales.
- La asignación incorrecta del orden puede degradar el rendimiento del modelo.
- No es adecuada para variables nominales.
Por ejemplo:
| Categoría | Código |
|---|---|
| Bajo | 1 |
| Medio | 2 |
| Alto | 3 |
El algoritmo podría asumir que la diferencia entre Bajo y Medio es exactamente igual que entre Medio y Alto, lo cual no siempre es cierto.
Limitaciones
Antes de aplicar esta técnica conviene considerar que:
- Requiere conocer el orden correcto de las categorías.
- No refleja necesariamente distancias reales entre niveles.
- Puede inducir sesgos en algunos modelos.
- No resulta adecuada para variables sin jerarquía.
- La codificación puede depender del contexto del problema.
Por ejemplo, una escala de satisfacción podría tener diferencias subjetivas entre categorías que no son uniformes.
Comparación con otras técnicas de codificación
| Característica | Ordinal Encoding | One-Hot Encoding | Target Encoding |
|---|---|---|---|
| Conserva el orden | Sí | No | Parcialmente |
| Genera múltiples columnas | No | Sí | No |
| Adecuado para variables ordinales | Sí | No | Sí |
| Adecuado para variables nominales | No | Sí | Sí |
| Riesgo de sobreajuste | Bajo | Bajo | Alto |
| Consumo de memoria | Bajo | Alto | Bajo |
Ordinal Encoding vs One-Hot Encoding
| Aspecto | Ordinal Encoding | One-Hot Encoding |
|---|---|---|
| Número de columnas | 1 | Una por categoría |
| Conserva jerarquía | Sí | No |
| Uso de memoria | Bajo | Alto |
| Variables ordinales | Excelente | Poco recomendable |
| Variables nominales | No recomendado | Excelente |
La regla general es sencilla:
- Variables ordinales → Ordinal Encoding.
- Variables nominales → One-Hot Encoding.
Aplicaciones en Data Science y Machine Learning
Ordinal Encoding aparece frecuentemente en:
- Modelos de scoring crediticio.
- Predicción de abandono de clientes.
- Sistemas de evaluación de riesgos.
- Recursos humanos.
- Marketing analítico.
- Segmentación de clientes.
- Modelos de satisfacción del cliente.
- Análisis educativo.
- Predicción de calidad de productos.
También es habitual en datasets que contienen:
- Niveles de satisfacción.
- Rangos de ingresos.
- Clasificaciones de riesgo.
- Prioridades operativas.
- Escalas de calidad.
Algoritmos donde suele utilizarse
Ordinal Encoding puede emplearse antes de algoritmos como:
- Regresión logística.
- Regresión lineal.
- Árboles de decisión.
- Random Forest.
- Gradient Boosting.
- XGBoost.
- LightGBM.
- Redes neuronales.
- Máquinas de vectores de soporte (SVM).
No obstante, los algoritmos basados en distancias deben utilizarse con precaución, ya que podrían interpretar los códigos como magnitudes reales.
Implementación en Python
Scikit-Learn incluye la clase OrdinalEncoder para realizar esta transformación.
Ejemplo básico
import pandas as pd
from sklearn.preprocessing import OrdinalEncoder
df = pd.DataFrame({
"satisfaccion": ["Baja", "Media", "Alta", "Media"]
})
encoder = OrdinalEncoder(
categories=[["Baja", "Media", "Alta"]]
)
df["satisfaccion_codificada"] = encoder.fit_transform(
df[["satisfaccion"]]
)
print(df)
Resultado:
satisfaccion satisfaccion_codificada
0 Baja 0.0
1 Media 1.0
2 Alta 2.0
3 Media 1.0
Codificación de múltiples variables
import pandas as pd
from sklearn.preprocessing import OrdinalEncoder
df = pd.DataFrame({
"riesgo": ["Bajo", "Medio", "Alto"],
"prioridad": ["Baja", "Media", "Alta"]
})
encoder = OrdinalEncoder(
categories=[
["Bajo", "Medio", "Alto"],
["Baja", "Media", "Alta"]
]
)
df_codificado = encoder.fit_transform(df)
print(df_codificado)
Uso dentro de un Pipeline
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import OrdinalEncoder
from sklearn.ensemble import RandomForestClassifier
pipeline = Pipeline([
("encoder", OrdinalEncoder(
categories=[["Bajo", "Medio", "Alto"]]
)),
("modelo", RandomForestClassifier())
])
pipeline.fit(X_train, y_train)
Este enfoque garantiza que la misma codificación se aplique tanto en entrenamiento como en producción.
Buenas prácticas
Al utilizar Ordinal Encoding es recomendable:
- Verificar que existe un orden real entre categorías.
- Definir explícitamente el orden.
- Documentar la codificación utilizada.
- Evitar aplicarlo a variables nominales.
- Validar el impacto de la codificación sobre el rendimiento del modelo.
- Utilizar pipelines para evitar inconsistencias.
Conclusión
Ordinal Encoding es una técnica fundamental de preparación de datos que permite transformar variables categóricas ordinales en valores numéricos preservando su estructura jerárquica. Su simplicidad, eficiencia y bajo consumo de memoria la convierten en una excelente opción cuando las categorías poseen un orden natural que aporta información relevante al modelo.
Sin embargo, debe utilizarse únicamente cuando existe una relación ordinal real entre las categorías. Aplicarla sobre variables nominales puede introducir relaciones artificiales y afectar negativamente al rendimiento de los algoritmos. Cuando se emplea correctamente, constituye una herramienta sencilla y eficaz para preparar datos categóricos en proyectos de Data Science y Machine Learning.