suppressMessages(library(rpart))
suppressMessages(library(caret))
suppressMessages(library(readr))
suppressMessages(library(dplyr))

Archivos de datos

Leer archivos Entrenamiento y Testeo:

Al usar la funcion read_csv del paquete readr tenemos la posibilidad de definir el tipo de dato que queremos para cada variable.

data_train <- readr::read_csv("./data/arbolado-mza-dataset.csv",
                              col_types = cols(
  id = col_integer(),
  especie = col_character(),
  ultima_modificacion = col_character(),
  altura = col_character(),
  circ_tronco_cm = col_double(),
  diametro_tronco = col_character(),
  long = col_double(),
  lat = col_double(),
  seccion = col_integer(),
  nombre_seccion = col_character(),
  area_seccion = col_double(),
  inclinacion_peligrosa = col_factor(levels = c(0,1))
))
data_test <-  readr::read_csv("./data/arbolado-mza-dataset-test.csv",col_types = cols(
  id = col_integer(),
  especie = col_character(),
  ultima_modificacion = col_character(),
  altura = col_character(),
  circ_tronco_cm = col_double(),
  diametro_tronco = col_character(),
  long = col_double(),
  lat = col_double(),
  seccion = col_integer(),
  nombre_seccion = col_character(),
  area_seccion = col_double()
))

Cual es la distribucion de las clase inclinacion_peligrosa?

Para responder esta primer pregunta basta con contabilizar las ocurrencias de cada uno de los valores posibles de clase inclinacion_peligrosa. Usando dplyr, basta con agrupar por cada uno de los valores la clase via (via group_by()) y luego con summarise() contabilizar el total de cada grupo creado. La funcion especial n() permite contabilizar cada uno de los grupos formados.

data_train %>%  group_by(inclinacion_peligrosa) %>% summarise(total=n())

Aplicamos Downsampling

Para esto tenemos que cargar el paquete caret y utilizar la funcion DownSample(). La funcion downSample() requiere 2 parametros, el primero es el conjunto de datos (data_train en esta caso) y el segundo la clase que nos interesa considerar para realizar el downsampling (en esta caso inclinacion_peligrosa). Tenga en cuenta que inclinacion_peligrosa necesita debe ser convertida a un factor

library(caret)
data_train_down<-downSample(data_train,data_train$inclinacion_peligrosa)
data_train_down %>%group_by(inclinacion_peligrosa) %>% summarise(total=n())

Aplicamos UpSampling

data_train_up<-upSample(data_train,data_train$inclinacion_peligrosa)
data_train_up %>%group_by(inclinacion_peligrosa) %>% summarise(total=n())
LS0tCnRpdGxlOiAiSEFDS0FUT04gQU0gLSBBcmJvbGFkbyBQdWJsaWNvIC0gTWFuZWphbmRvIGNsYXNlcyBkZXNiYWxhbmNlYWRhcyIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6IAogICAgaGlnaGxpZ2h0OiBoYWRkb2NrCiAgICBudW1iZXJfc2VjdGlvbnM6IG5vCi0tLQpgYGB7ciBzZXR1cH0KCnN1cHByZXNzTWVzc2FnZXMobGlicmFyeShycGFydCkpCnN1cHByZXNzTWVzc2FnZXMobGlicmFyeShjYXJldCkpCnN1cHByZXNzTWVzc2FnZXMobGlicmFyeShyZWFkcikpCnN1cHByZXNzTWVzc2FnZXMobGlicmFyeShkcGx5cikpCgpgYGAKCgojIEFyY2hpdm9zIGRlIGRhdG9zCgoqICoqW2FyYm9sYWRvLW16YS1kYXRhc2V0LmNzdl0oaHR0cHM6Ly93d3cuZHJvcGJveC5jb20vcy81YTB1NGg1NXFudmtsaGwvYXJib2xhZG8tbXphLWRhdGFzZXQuY3N2P2RsPTEpKiogLSBjb25qdW50byBkZSBkYXRvcyBwYXJhIGVudHJlbmFtaWVudG8KKiAqKlthcmJvbGFkby1temEtZGF0YXNldC10ZXN0LmNzdl0oaHR0cHM6Ly93d3cuZHJvcGJveC5jb20vcy92Nm5tZzFueTQ3a2o5ZHUvYXJib2xhZG8tbXphLWRhdGFzZXQtdGVzdC5jc3Y/ZGw9MSkqKiAtIGNvbmp1bnRvIGRlIGRhdG9zIHBhcmEgZXZhbHVhY2lvbgoqICoqW2FyYm9sYWRvLW16YS1kYXRhc2V0LWRlc2NyaXBjaW9uLmNzdl0oaHR0cHM6Ly93d3cuZHJvcGJveC5jb20vcy9xdmYwZnJrMWVqcHU0NzYvYXJib2xhZG8tbXphLWRhdGFzZXQtZGVzY3JpcGNpb24uY3N2P2RsPTEpKiogLSBJbmZvcm1hY2nDs24gZXh0cmEgc29icmUgbG9zIGRhdG9zLgoKIyBMZWVyIGFyY2hpdm9zICBFbnRyZW5hbWllbnRvIHkgVGVzdGVvOgoKQWwgdXNhciBsYSBmdW5jaW9uICpyZWFkX2NzdiogZGVsIHBhcXVldGUgKipyZWFkcioqIHRlbmVtb3MgbGEgcG9zaWJpbGlkYWQgZGUgZGVmaW5pciBlbCB0aXBvIGRlIGRhdG8gcXVlIHF1ZXJlbW9zIHBhcmEgY2FkYSB2YXJpYWJsZS4KCmBgYHtyIH0KZGF0YV90cmFpbiA8LSByZWFkcjo6cmVhZF9jc3YoIi4vZGF0YS9hcmJvbGFkby1temEtZGF0YXNldC5jc3YiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKAogIGlkID0gY29sX2ludGVnZXIoKSwKICBlc3BlY2llID0gY29sX2NoYXJhY3RlcigpLAogIHVsdGltYV9tb2RpZmljYWNpb24gPSBjb2xfY2hhcmFjdGVyKCksCiAgYWx0dXJhID0gY29sX2NoYXJhY3RlcigpLAogIGNpcmNfdHJvbmNvX2NtID0gY29sX2RvdWJsZSgpLAogIGRpYW1ldHJvX3Ryb25jbyA9IGNvbF9jaGFyYWN0ZXIoKSwKICBsb25nID0gY29sX2RvdWJsZSgpLAogIGxhdCA9IGNvbF9kb3VibGUoKSwKICBzZWNjaW9uID0gY29sX2ludGVnZXIoKSwKICBub21icmVfc2VjY2lvbiA9IGNvbF9jaGFyYWN0ZXIoKSwKICBhcmVhX3NlY2Npb24gPSBjb2xfZG91YmxlKCksCiAgaW5jbGluYWNpb25fcGVsaWdyb3NhID0gY29sX2ZhY3RvcihsZXZlbHMgPSBjKDAsMSkpCikpCgpkYXRhX3Rlc3QgPC0gIHJlYWRyOjpyZWFkX2NzdigiLi9kYXRhL2FyYm9sYWRvLW16YS1kYXRhc2V0LXRlc3QuY3N2Iixjb2xfdHlwZXMgPSBjb2xzKAogIGlkID0gY29sX2ludGVnZXIoKSwKICBlc3BlY2llID0gY29sX2NoYXJhY3RlcigpLAogIHVsdGltYV9tb2RpZmljYWNpb24gPSBjb2xfY2hhcmFjdGVyKCksCiAgYWx0dXJhID0gY29sX2NoYXJhY3RlcigpLAogIGNpcmNfdHJvbmNvX2NtID0gY29sX2RvdWJsZSgpLAogIGRpYW1ldHJvX3Ryb25jbyA9IGNvbF9jaGFyYWN0ZXIoKSwKICBsb25nID0gY29sX2RvdWJsZSgpLAogIGxhdCA9IGNvbF9kb3VibGUoKSwKICBzZWNjaW9uID0gY29sX2ludGVnZXIoKSwKICBub21icmVfc2VjY2lvbiA9IGNvbF9jaGFyYWN0ZXIoKSwKICBhcmVhX3NlY2Npb24gPSBjb2xfZG91YmxlKCkKKSkKCmBgYAoKIyMgQ3VhbCBlcyBsYSBkaXN0cmlidWNpb24gZGUgbGFzIGNsYXNlICoqaW5jbGluYWNpb25fcGVsaWdyb3NhPyoqCgpQYXJhIHJlc3BvbmRlciBlc3RhIHByaW1lciBwcmVndW50YSBiYXN0YSBjb24gY29udGFiaWxpemFyIGxhcyBvY3VycmVuY2lhcyBkZSBjYWRhIHVubyBkZSBsb3MgdmFsb3JlcyBwb3NpYmxlcyBkZSAgY2xhc2UgKippbmNsaW5hY2lvbl9wZWxpZ3Jvc2EqKi4gVXNhbmRvIGRwbHlyLCBiYXN0YSBjb24gYWdydXBhciBwb3IgY2FkYSB1bm8gZGUgbG9zIHZhbG9yZXMgbGEgY2xhc2UgdmlhICh2aWEgKipncm91cF9ieSgpKiopIHkgbHVlZ28gY29uICoqc3VtbWFyaXNlKCkqKiBjb250YWJpbGl6YXIgZWwgdG90YWwgZGUgY2FkYSBncnVwbyBjcmVhZG8uIExhIGZ1bmNpb24gZXNwZWNpYWwgKipuKCkqKiBwZXJtaXRlIGNvbnRhYmlsaXphciBjYWRhIHVubyBkZSBsb3MgZ3J1cG9zIGZvcm1hZG9zLgoKYGBge3IgZWNobz1UUlVFfQpkYXRhX3RyYWluICU+JSAgZ3JvdXBfYnkoaW5jbGluYWNpb25fcGVsaWdyb3NhKSAlPiUgc3VtbWFyaXNlKHRvdGFsPW4oKSkKYGBgCiMjIEFwbGljYW1vcyBEb3duc2FtcGxpbmcKClBhcmEgZXN0byB0ZW5lbW9zIHF1ZSBjYXJnYXIgZWwgcGFxdWV0ZSAqKmNhcmV0KiogeSB1dGlsaXphciBsYSBmdW5jaW9uICoqRG93blNhbXBsZSgpKiouIExhIGZ1bmNpb24gKipkb3duU2FtcGxlKCkqKiByZXF1aWVyZSAyIHBhcmFtZXRyb3MsIGVsIHByaW1lcm8gZXMgZWwgY29uanVudG8gZGUgZGF0b3MgKGRhdGFfdHJhaW4gZW4gZXN0YSBjYXNvKSB5IGVsIHNlZ3VuZG8gbGEgY2xhc2UgcXVlIG5vcyBpbnRlcmVzYSBjb25zaWRlcmFyIHBhcmEgcmVhbGl6YXIgZWwgZG93bnNhbXBsaW5nIChlbiBlc3RhIGNhc28gKmluY2xpbmFjaW9uX3BlbGlncm9zYSopLiBUZW5nYSBlbiBjdWVudGEgcXVlIGluY2xpbmFjaW9uX3BlbGlncm9zYSBuZWNlc2l0YSBkZWJlIHNlciAgY29udmVydGlkYSBhIHVuICoqZmFjdG9yKioKCmBgYHtyfQpsaWJyYXJ5KGNhcmV0KQpkYXRhX3RyYWluX2Rvd248LWRvd25TYW1wbGUoZGF0YV90cmFpbixkYXRhX3RyYWluJGluY2xpbmFjaW9uX3BlbGlncm9zYSkKZGF0YV90cmFpbl9kb3duICU+JWdyb3VwX2J5KGluY2xpbmFjaW9uX3BlbGlncm9zYSkgJT4lIHN1bW1hcmlzZSh0b3RhbD1uKCkpCmBgYAoKCiMjIEFwbGljYW1vcyBVcFNhbXBsaW5nCmBgYHtyfQpkYXRhX3RyYWluX3VwPC11cFNhbXBsZShkYXRhX3RyYWluLGRhdGFfdHJhaW4kaW5jbGluYWNpb25fcGVsaWdyb3NhKQpkYXRhX3RyYWluX3VwICU+JWdyb3VwX2J5KGluY2xpbmFjaW9uX3BlbGlncm9zYSkgJT4lIHN1bW1hcmlzZSh0b3RhbD1uKCkpCmBgYAoK