Está en la página 1de 9

INFORME

Muestra cuantas filas y columnas tiene la data IRIS.


glimpse(iris)

MODELO

Interpretación: por lo que observamos hay la misma cantidad de setosas versicolor y


virginica
ARBOL DE DECISIONES

INTERPRETACION: En nuestro árbol de decisión observamos que las especies


tienen diferentes porcentajes y valores.
Calculamos el 75% de datos

num_reg_entrena<-as.integer(0.75*nrow(iris))

num_reg_entrena

Se observar que de los 150 datos se nos reduce a 112.

CREAMOS UNA MUESTRA ALEATORIA DEL REGISTRO DE ENTRENAMIENTO.

CREAMOS EL CONJUNTO DE REGISTRO O ENTRENAMIENTO.

• Los 6 primeros registros.

CREAMOS LOS DATOS DE COMPROBACIÓN O TEST.

• Los 6 primeros registros

AHORA HACEMOS PREDICCIONES SOBRE EL GRUPO DE TEST.


EXAMINAMOS LOS DATOS CON LA MATRIZ DE CONFUSIÓN.

Calculamos la bondad del modelo sobre el grupo test

Interpretación: Como vemos el 92 % de ajuste es un valor alto, pero no infalible.


PODA DE LOS ÁRBOLES
El proceso puede hacerse antes o después de crear el árbol, en lo que llamamos pre y
post poda de control. En concreto la librería rpart contiene un parámetro que hemos
estado usando el cp, que controla la complejidad del árbol.
Ejemplo de pre-poda en rpart:
require(rpart)
control.poda <- rpart.control(maxdepth = 2, minsplit = 10)
control.poda
CAMBIANDO LOS PARÁMETROS DE PODA EL MODELO ES DIFERENTE:
control.poda <- rpart.control(maxdepth = 4)
iris2.model <- rpart(Species ~ .,
data = iris_train,
method = "class",
control = control.poda)
rpart.plot(iris.model)
Ejemplo post poda
plotcp(iris.model)
plotcp(iris2.model)

Y simplificar el modelo anterior ya calculado como apreciamos a partir de cp=0.1 el


modelo se simplifica mucho
rpart.plot(prune(iris.model, cp = 0.10))
ANEXO:
###------------------- Arbol de decisi?n: Datos Titanic -----------------------
##OBJETIVO: PREDECIR LA PORBLABILIDAD DE QUE UNA FLOR SEA O NO VIRGINCA
##EN FUNCIION DE SUS CARACTERISTICAS
library(dplyr)## gram?tica de la manupulaci?n de los datos
library(caret)##entrenamiento de clasificacion y regresion

# Crear un modelo de clasificacion con rpart


library(rpart)
library(rpart.plot) # contiene los datos ptitanic

data("iris") #Contiene la data de iris


glimpse(iris) #muestra cuantas filas y columnas de iris

# Modelo
table(iris$Species)
# Generamos el modelo
ESPECIE.model <- rpart(Species ~ ., data = iris, cp = .02) # cp = .02 para árbol pequeño
de demostración

# Representamos el modelo
rpart.plot(ESPECIE.model,
main = "Clasificacion de especies Iris \n (respuesta binaria)")

# Overfitting -

# Dividir los datos de partida en dos conjuntos, uno con el 75% de los registros
# para entrenamiento y otro con el 25% de los datos para test o comprobación
# del ajuste del modelo.

# contamos el num de registro de la base de datos de iris


nrow(iris)

# calculamos el 75% de datos


num_reg_entrena<-as.integer(0.75*nrow(iris))
num_reg_entrena #mostrar

# Creamos una muestra aleatoria de registros de entrenamiento


v_iris_train <- sample(nrow(iris), num_reg_entrena)
v_iris_train #mostrar datos
# Creamos el conjunto de registros de entrenamiento
iris_train <- iris[v_iris_train,]
iris_train
head(iris_train)

# Creamos los datos de comprobaci?n o test (notar el -)


iris_test <- iris[-v_iris_train,]
iris_test
head(iris_test)

# Creamos el modelo y lo entrenamos


# Creamos un modelo de seleccion de especies
seleccion.model <- rpart(Species ~ ., data = iris_train, cp = .02)

# ahrora hacemos predicciones sobre el grupo de test


iris_test$pred <- predict(seleccion.model,iris_test, type = "class")
head(iris_test)
iris_test$pred

# Examinamos los resultados con la matriz de confusion


table(iris_test$pred,iris_test$Species)

# Calculamos la bondad del modelo sobre el grupo de test


100*mean(iris_test$pred==iris_test$Species)
# Como vemos el 91 % de ajuste es un valor alto.

# Poda de los ?rboles

# El proceso puede hacerse antes o despu?s de crear el ?rbol, en lo que llamamos


# pre y post poda de control. En concreto la librer?a rpart contiene un
# par?metro que hemos estado usando el cp, que controla la complejidad del ?rbol.

# Ejemplo de pre-poda en rpart


require(rpart)
control.poda <- rpart.control(maxdepth = 2, minsplit = 10)
control.poda
iris.model <- rpart(Species ~ .,
data = iris_train,
method = "class",
control = control.poda)

rpart.plot(iris.model)
# cambiando los parametros de poda el modelo es diferente:
control.poda <- rpart.control(maxdepth = 4)
iris2.model <- rpart(Species ~ .,
data = iris_train,
method = "class",
control = control.poda)

rpart.plot(iris.model)

# Ejemplo de post poda


# el parametro cp, controla la post poda
# podemos ver su influencia dibujando la grafica de cp
plotcp(iris.model)
plotcp(iris2.model)

# y simplificar el modelo anterior ya calculado


# como apreciamos a partir de cp=0.1 el modelo se simplifica mucho
rpart.plot(prune(iris.model, cp = 0.10))

También podría gustarte