Github : https://github.com/ydmarinb
Aveces es necesario utilizar variables categóricas en métodos analı́ticos que solo permiten el ingreso de variables numéricas,por lo que aveces es necesario crear variables indicadoras. Con el paquete dummies podemos hacer estas conversiones.
library(dummies)
library(kableExtra)
base <- read.csv("bases de datos/data-conversion.csv")
kable(head(base),format = "markdown")
Age | State | Gender | Height | Income |
---|---|---|---|---|
23 | NJ | F | 61 | 5000 |
13 | NY | M | 55 | 1000 |
36 | NJ | M | 66 | 3000 |
31 | VA | F | 64 | 4000 |
58 | NY | F | 70 | 30000 |
29 | TX | F | 63 | 10000 |
base.dummy <- dummy.data.frame(base)
kable(head(base.dummy),format = "markdown")
Age | StateNJ | StateNY | StateTX | StateVA | GenderF | GenderM | Height | Income |
---|---|---|---|---|---|---|---|---|
23 | 1 | 0 | 0 | 0 | 1 | 0 | 61 | 5000 |
13 | 0 | 1 | 0 | 0 | 0 | 1 | 55 | 1000 |
36 | 1 | 0 | 0 | 0 | 0 | 1 | 66 | 3000 |
31 | 0 | 0 | 0 | 1 | 1 | 0 | 64 | 4000 |
58 | 0 | 1 | 0 | 0 | 1 | 0 | 70 | 30000 |
29 | 0 | 0 | 1 | 0 | 1 | 0 | 63 | 10000 |
base.dummy <- dummy.data.frame(base, names = "Gender")
kable(head(base.dummy),format = "markdown")
Age | State | GenderF | GenderM | Height | Income |
---|---|---|---|---|---|
23 | NJ | 1 | 0 | 61 | 5000 |
13 | NY | 0 | 1 | 55 | 1000 |
36 | NJ | 0 | 1 | 66 | 3000 |
31 | VA | 1 | 0 | 64 | 4000 |
58 | NY | 1 | 0 | 70 | 30000 |
29 | TX | 1 | 0 | 63 | 10000 |
Para entender la necesidad de escalar variables analizaremos la siguiente base de datos
kable(head(base)) %>% column_spec(5,background = "pink") %>% row_spec(c(2,5),background = "yellow") %>% kable_styling(full_width = T)
Age | State | Gender | Height | Income |
---|---|---|---|---|
23 | NJ | F | 61 | 5000 |
13 | NY | M | 55 | 1000 |
36 | NJ | M | 66 | 3000 |
31 | VA | F | 64 | 4000 |
58 | NY | F | 70 | 30000 |
29 | TX | F | 63 | 10000 |
Se puede observar que aunque las cuadriculas pintadas en amarillo pertenecen a la misma variable (Income) la diferencia en valor numérico es bastante grande, lo que puede dificultar la implementación de técnicas de Machine Learning. En R cuando queremos escalar las variables hacemos los siguientes procedimientos.
library(scales)
#Ahora reescalamos un variable de la base de datos
kable(rescale(base$Income))
x |
---|
0.0740741 |
0.0000000 |
0.0370370 |
0.0555556 |
0.5370370 |
0.1666667 |
0.9074074 |
1.0000000 |
0.0185185 |
0.3518519 |
Por defecto la función rescale me realiza un escalado de la variables en un rango [0,1] ya que aplica el siguiente método para escalar
\[x.escalada = \frac{x-min(x)}{max(x)-min(x)}\] Si queremos modificar la escala modelos hacer lo siguiente
kable(rescale(base$Income,to=c(1,10)))
x |
---|
1.666667 |
1.000000 |
1.333333 |
1.500000 |
5.833333 |
2.500000 |
9.166667 |
10.000000 |
1.166667 |
4.166667 |
la normalización significa ajustar los valores medidos en diferentes escalas respecto a una escala común, a menudo previo a un proceso de realizar promedios. En R se pueden escalar las variables de una base de datos por dedio de el siguiente procedimiento.
base.escalada<- scale(base[,c(4,5)],center=T,scale=T)
kable(head(base.escalada),format = "markdown")
Height | Income |
---|---|
-0.7218398 | -0.6377182 |
-2.0342757 | -0.8339392 |
0.3718568 | -0.7358287 |
-0.0656218 | -0.6867734 |
1.2468141 | 0.5886629 |
-0.2843611 | -0.3924420 |