domingo, 13 de marzo de 2016

Binarizar variables continuas

El siguiente script transforma las variables continuas en múltiples variables binarias (0,1) que indican a qué cuartil pertenece la observación para cada variable.
Esto para usar en algoritmos (como las redes neuronales) que aprenden mas rápido con datos binarizados.
NOTA: En algunas situaciones esto puede significar una perdida de información, para detalle sobre esto ver referencias 1 y 2.

Usando el data set iris, conceptualmente queda así:















# Identificar variables calse
#----------------------------------------------------------
iris.bin <- subset(iris, select = Species)
 
 
# Identificar variables a binarizar
#----------------------------------------------------------
v.bin  <- c("Sepal.Length", "Sepal.Width",  "Petal.Length", "Petal.Width")
 
 
# binarizacion
#-----------------------------------------------------------
for (i in 1:length(v.bin) ){ 
  v_x    <- iris[,v.bin[i]]
  qnt    <- unique(quantile(v_x,seq(0, 1, .25)))
 
  for ( ii in 1:(length(qnt)-1) ) {
    iris.bin$tmp   <- ifelse (v_x > qnt[ii] & v_x <= qnt[ii+1], 1, 0)
    iris.bin$tmp   <- ifelse (qnt[ii] == qnt[1] & v_x == qnt[ii], 1, iris.bin$tmp)
    names(iris.bin)[names(iris.bin)=="tmp"] <- paste(v.bin[i],"_disc_", ii, sep = "")
  }
}

1 comentario:

  1. Hola Enmanuel, esta muy interesante pero la imagen que colocaste esta errónea si tienes chance revisala.

    Saludos.

    ResponderEliminar