Codificación de variables categóricas

Autor: | Última modificación: 19 de octubre de 2022 | Tiempo de Lectura: 3 minutos
Temas en este post:

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 1

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 2

¿Qué sigue ahora?

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!

👉 Descubre más del Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp ¡Descarga el temario!

👉 Prueba el Bootcamp Gratis por una Semana ¡Empieza ahora mismo!

👉 Conoce nuestros otros Bootcamps en Programación y Tecnología

[email protected]

¿Trabajo? Aprende a programar y consíguelo.

¡No te pierdas la próxima edición del Aprende a Programar desde Cero Full Stack Jr. Bootcamp!

 

Prepárate en 4 meses, aprende las últimas tecnologías y consigue trabajo desde ya. 

 

Solo en España hay más de 120.400 puestos tech sin cubrir, y con un sueldo 11.000€ por encima de la media nacional. ¡Es tu momento!

 

🗓️ Próxima edición: 13 de febrero

 

Reserva tu plaza descubre las becas disponibles.