# Práctico 6 # Ejercicio 3 # Parte 2 # Instalar el paquete rpart si no lo tienes instalado install.packages("rpart") # Cargar el paquete rpart library(rpart) # Crear un data.frame con tus datos data <- data.frame( x1 = c("a", "a", "b", "a", "a", "b", "b", "b"), x2 = c("b", "a", "a", "a", "a", "b", "b", "b"), y = c(1, 1, 1, 1, -1, -1, -1, -1) ) # Ajustar el modelo de árbol de clasificación tree_model <- rpart(y ~ x1 + x2, data = data, minbucket = 1, cp = 0.1) # Mostrar el árbol resultante print(tree_model) par(xpd = NA) # Permite que las etiquetas estén fuera de los márgenes de la gráfica par(mar = c(4, 4, 4, 4)) # Ajustar márgenes (inferior, izquierdo, superior, derecho) # Graficar el árbol plot(tree_model, uniform = TRUE, main = "Árbol de Clasificación en R") # Agregar texto al gráfico con más detalles text(tree_model, use.n = TRUE, all = TRUE, fancy = TRUE, digits = 3, cex = 0.8) # Para que sea como nuestro árbol, modificamos parametro cp = complexity parameter # Este parámetro controla la poda del arbol # El árbol se construye haciendo divisiones que disminuyen la impureza en una cantidad mayor que el valor de cp tree_model <- rpart(y ~ x1 + x2, data = data, minbucket = 1, cp = 0) # Mostrar el árbol resultante print(tree_model) par(xpd = NA) par(mar = c(4, 4, 4, 4)) plot(tree_model, uniform = TRUE, main = "Árbol de Clasificación en R") text(tree_model, use.n = TRUE, all = TRUE, fancy = TRUE, digits = 3, cex = 0.8) summary(tree_model) # Otra forma de entrenar y plotear el árbol: # si no lo tiene instalado debe ejecutar install.packages("rpart.plot") library(rpart.plot) data$y <- as.factor(data$y) tree_model <- rpart(y ~ x1 + x2, data = data, method = "class", minbucket = 1, cp = 0) # Graficar el árbol usando rpart.plot con las clases más frecuentes rpart.plot(tree_model, type = 3, extra = 104, under = TRUE, fallen.leaves = FALSE, cex = 0.8) #De esta forma podemos predecir la clase de nuevas observaciones nuevas_obs <- data.frame(x1 = c("a", "b", "a"), x2 = c("b", "b", "a")) prediccion_clase <- predict(tree_model, nuevas_obs, type = "class") print(prediccion_clase) #-------------------------------------------------------- # Ejercicio 8 # Instalamos el paquete del libro ISLR install.packages("ISLR") # Cargar el paquete library(ISLR) # Cargar el dataset Carseats data("Carseats") # Mostrar las primeras filas del dataset head(Carseats) # Parte a) # Para reproducibilidad, fijamos semilla set.seed(2024) # Dividimos el conjunto en train y test con la función sample() train_index <- sample(1:nrow(Carseats), 2/3 * nrow(Carseats)) train_data <- Carseats[train_index, ] test_data <- Carseats[-train_index, ]