Skip to content
LAB_8_ANALYTICS
  • AI Chat
  • Code
  • Report
  • ########## LABORATORIO 8 - H0738 ##########
    ######### MARKO TALLEDO - 20162271
    
    # Leemos las librerias necesarias para el estudio
    library(tidyverse)
    library(dplyr)
    library(ggplot2)
    library(stats)
    library(e1071)
    # Importamos el dataset de este laboratorio
    admision_data = read.csv('Admission_Predict_Ver1.1.csv')
    head(admision_data)
    # Vemos si existen nulos dentro del dataset
    colSums(is.na(admision_data))
    
    # No existen datos nulos en la base de datos
    
    # Seteamos un seed aleatorio 
    set.seed(20162271)
    
    # Separamos la variable que no es atribuible a las caracteristicas que determinan si un estudiante es apto o no para ser admitido en la UCLA
    admision_data = admision_data[,-1]
    
    
    # Creamos las variables para el arbol de clasificación
    admision_data['Cat_admit'] = cut(admision_data$Chance.of.Admit, breaks = c(0,0.7,0.8,0.9,1),labels = c(4,3,2,1))
    
    # Separamos el dataframe en train (70%) y test (30%)
    ind <- sample(2, nrow(admision_data), replace = TRUE, prob=c(0.7,0.3))
    # Si el ind==1 entonces pertenece a train
    train_ad <- admision_data[ind==1,]
    # Si el ind==2 entonces pertenece a test
    test_ad <- admision_data[ind==2,]
    
    head(admision_data)
    ########################################
    ######### ÁRBOL DE REGRESIÓN #########
    ########################################
    
    train_ad_reg = train_ad[,-9]
    test_ad_reg = test_ad[,-9]
    
    # Libreria para llamar al arbol de regression
    library(rpart)
    myFormula <- Chance.of.Admit ~ .
    admin_rpart <- rpart(myFormula, data = train_ad_reg ,control = rpart.control(minsplit=10))
    # Mostramos el arbol
    print(admin_rpart)
    # ploteamos el arbol
    plot(admin_rpart)
    text(admin_rpart, use.n = T)
    # Optimizamos los valores del modelo de arbol donde se minimiza el error
    opt <- which.min(admin_rpart$cptable[,"xerror"])
    
    cp<- admin_rpart$cptable[opt,"CP"]
    admin_rpart_prune <- prune(admin_rpart, cp=cp)
    # Se muestran las caracteristicas del arbol
    print(admin_rpart_prune)
    # Ploteamos el arbol optimizado
    plot(admin_rpart_prune)
    text(admin_rpart_prune, use.n = T)
    # Predecimos con data nueva
    admin_pred <- predict(admin_rpart_prune, newdata= test_ad_reg)
    xlim <- range(admision_data$Chance.of.Admit)
    plot(admin_pred ~ Chance.of.Admit, data=test_ad_reg, xlab="Observed", ylab="Predicted",
         ylim=xlim, xlim=xlim)
    abline(a=0, b=1)
    
    # Tasa de error
    mean((admin_pred - test_ad_reg$Chance.of.Admit)*2)*(1/2)
    ########################################
    ######### ÁRBOL DE CLASIFICACION #######
    ########################################
    
    # Paquete para llamar al árbol de clasificación
    #install.packages("party")
    library(party)
    
    
    # sEPARAMOS LA DATA PARA EL ARBOL DE CLASIFICACION
    train_ad_cla = train_ad[,-8]
    test_ad_cla = test_ad[,-8]