Codificación de variables categóricas

| Última modificación: 29 de septiembre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En este artículo, te enseñaremos cómo es el proceso de codificación de variables categóricas, un tipo de variables en el que se clasificana los individuos o casos.

Métodos de codificación de variables categóricas

One-hot

En este método de codificación de variables categóricas se crean N columnas nuevas, tantas como posibles valores tenga la variable categórica. Se asigna un valor de 1 a la variable que tiene ese valor 0 en caso contrario.

col1col2col3col4
categoria11000
categoria20100
categoria30010
categoria40001
In [118]: df_new_econding <- df_weight_height
df_new_econding$boy <- ifelse (df_new_econding$gender == "boy", 1, 0).
df_new_econdingsgirl <- ifelse(df_new_econdingsgender == "girl", 1, 0)
df_new_econdingsgender <- NULL
#set.seed(123)
#idxe <- sample (1:nrow (df_new_econding), nrow (df_new_econding) * 0.7)
train.df <- df_new_econding [idx,]
test.df <- df_new_econding [-idx,]

In [ ] : head (train.df)
dayheightweightboygirl
<int><dbl><dbl><dbl><dbl>
15911561.691817.03385910
1791355102.2483418.25669601
1481888.3817310.85940701
19574185.2662813.39303110
1701523104.2297414.48612010
50116395.8946212.66859110
In [120] : model <- lm (data = train.df, formula = height - day : boy + day : girl)
summary(model)

Call:

lm (formula = height – day:boy + day:girl, data = train.df)

Residuals:

Min: -10.429

1Q: -2.881

Median: 0.110

3Q: 3.566

Max: 10.293

Coefficients:

EstimateStd.Errort valuePr (>ltl)
(Intercpet)62.6042550.74353784.20<2e – 16 ***
0.292210.00085234.30<2e – 16 ***
0.0275930.00080834.15<2e – 16 ***

Signif. codes:

0 ‘ *** ‘

0.001 ‘ ** ‘

0.01 ‘ * ‘

0.05 ‘ . ‘

0.1 ‘ ‘

1

Residual standard error: 4.632 on 137 degrees of freedom

Multiple R-squared: 0.9162,

Adjusted R-squared: 0.915

F-statistic: 748.9 on 2 and 137 DF, p-value: < 2.2e – 16

In [ ] : model<-lm(data-train.df, formula-height-day+girl) summary(model)

Call:

ln (formula = height – day + girl, data = train.df)

Residuals:

Min: .10.1152

1Q: -2.8007

Median: 0.0805

3Q: 3.5784

Max: 10.0219

Coefficients:

EstimateStd.Errort valuePr (> ltl)
(Intercept)63.20074840.866694972.922<2e – 16 ***
day0.02831340.000739338.296<2e – 16 ***
girl-1.06917580.7942038-1.3460.18

Signif. codes:

0 ‘ *** ‘

0.001 ‘ ** ‘

0.01 ‘ * ‘

0.05 ‘ . ‘

0.1 ‘ ‘

1

Residual standard error: 4.675 on 137 degrees of freedom

Multiple R-squared: 0.9146

Adjusted R-squared: 0.9134

F-statistic: 733.9 on 2 and 137 DF, p-value: < 2.2e-16

Dummy

En la codificación de variables categóricas por el método Dummy, se crean N-1 columnas nuevas, tantas como posibles valores tenga la variable categórica menos una. Así, habrá una categoría en la que todos los valores serán 0 y esa categoría se usará como base del modelo.

En este método de codificación de variables categóricas, al resto de columnas se le asigna un valor de 1 a la variable que tiene ese valor 0 en caso contrario.

col1col2col3
categoria1000
categoria2100
categoria3010
categoria4001
In [122] : df_new_econding <- df_weight_height
df_new_econding$girl <- ifelse (df_new_econding$gender == "girl", 1, 0)
df_new_econdingsgender <- NULL
set.seed(123)
idx <- sample (l:nrow (df_new_econding), nrow(df_new_econding) * 0.7)
train.df <- df_new_econding [idx,]
test.df <- df_new_econding [-idx,]

In [123]: head (train.df)
dayheightweightgirl
<int><dbl><dbl><dbl>
15911561.691817.0338590
1791355102.2483418.2566961
1481888.3817310.8594071
19574185.2662813.3930310
1701523104.2297414.4861200
50116395.8946212.6685910
In [124] : model <- lm (data = train.df, formula = height - day + day : girl)
summary (model)

Call:

lm (formula = height – day + day : girl, data = train.df)

Residuals:

Min: -10.429

1Q: -2881

Median: 0.110

3Q: 3.566

Max: 10.293

Coefficients:

EstimateStd.Errort value Pr (>ltl)
(Intercept)62.6042550.74353784.198<2e – 16 ***
day0.0292210.00085234.299<2e – 16 ***
day:girl-0.0016280.000776-2.0970.0378 *

Signif. codes:

0 ‘ *** ‘

0.001 ‘ ** ‘

0.01 ‘ * ‘

0.05 ‘ . ‘

0.1 ‘ ‘

1

Residual standard error: 4.632 on 137 degrees of freedom
Multiple R-squared: 8.9162
Adjusted R-squared: 0.915
F-statistic: 748.9 on 2 and 137 DF, p-value: < 2.2e-16

In [125] : paste ("El coeficiente final para las niñas es:, modelscoefficients [2] + modelscoefficients [3] )

“El coeficiente final para las niñas es: 0.0275933503254364

La ecuación equivalente seria:

codificación de variables categóricas: ecuación

Ortogonal de polinomios

La codificación de variables categóricas por ortogonal de polinomios es una forma de análisis de tendencias, ya que busca tendencias lineales, cuadráticas, cúbicas, grado-n, etc. en la variable categórica.

codificación de variables categóricas

Codificación Helmert

La codificación de variables categóricas por el método Helmert compara cada nivel de una variable categórica con la media de los niveles subsiguientes.

codificación de variables categóricas

Existen otros métodos de codificación de variables categóricas, pero los dos primeros, el dummy y el one-hot, son los más importantes. Estos métodos son de gran relevancia en los análisis estadísticos y en el Big Data, por eso, te invitamos a que aprendas más sobre ellos con nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. En muy poco tiempo, podrás formarte en todo lo necesario para incursionar en el mercado laboral. ¡Entra y apúntate!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado