Cargamos las librerias a utilizar
#############################################library(dplyr) # for data manipulation
library(caret) # for model-building
library(DMwR) # for smote implementation
library(purrr) # for functional programming (map)
library(pROC)
library(knitr)
library(qgraph)
library(nortest)
library(magrittr)
library(dplyr)
library(tidyr)
library(e1071)
library(OneR)
library(tidyverse) # data manipulation and visualization
library(ggplot2) # plot arrangement
library(gridExtra) # plot arrangement
library(caret)
library(ggplot2)
library(FactoMineR)
library(factoextra)
library(modes) # MODA VER EL COMPORTAMIENTO GENERAL DE LA INF
library(randomForest)
#CARGAS DATOS PARA TRABAJAR MODELO PREDICTIVO
############################################
ruta <- 'C:/Users/Jhampier/Google Drive/Maestria/TESIS DE MAESTRIA/Proyecto'
setwd('C:/Users/Jhampier/Google Drive/Maestria/TESIS DE MAESTRIA/Proyecto')
#ruta <- 'C:/Users/jtapiasu/Google Drive/Maestria/TESIS DE MAESTRIA/Proyecto'
#setwd('C:/Users/jtapiasu/Google Drive/Maestria/TESIS DE MAESTRIA/Proyecto')
#C:\Users\Administrador\Desktop
#ruta <- 'C:/Users/Administrador/Desktop'
#setwd('C:/Users/Administrador/Desktop')
#Leer el conjunto de datos del archivo CSV
DataSetUprivada <- read.table(paste(ruta, "/DataSetUprivadaBinarizadaSinRuidoFuturo.csv",sep=""),header=TRUE,sep=";")
##########################################################
########## 2 COMPRESION DE DATOS Y 3 PREPARACIÓN DE DATOS#####
##########################################################
View(DataSetUprivada)
########################################################
## DIMENSIONES - CANTIDAD DE FILAS Y VARIABLES(COLUMNAS)
nrow(DataSetUprivada)#[1] 35693
[1] 35693
ncol(DataSetUprivada)#[1] 27 -1 de categoria(var categorica)
[1] 28
colnames(DataSetUprivada)#Nombres de Variables
[1] "CodAlumno" "SemestresEstudiadosAcum"
[3] "CantCursosLlevadosAcum" "CursosLlevadosFueraCarreraAcum"
[5] "AvgSinAplzAcum" "AvgConAplzAcum"
[7] "CantCursosAplzAcum" "SumCredTeoAcum"
[9] "SumCredPraAcum" "edad"
[11] "SEXO" "AvgVezMatriAcum"
[13] "CarreraProfesional" "MODALIDAD_INGRESO"
[15] "ANIO_INGRESO" "UBIG_NACIMIENTO"
[17] "UBIG_RESIDENCIA" "TIPO_VIVIENDA"
[19] "GradoInstruccionPapa" "ProfesionPapa"
[21] "OcupacionPapa" "GradoInstruccionMama"
[23] "ProfesionMama" "OcupacionMama"
[25] "CantCursosAnulados" "categoria"
[27] "categoriaBinarizada" "ProbabDesercion"
##NOMBRES Y TIPOS DE DATOS DE LAS COLUMNAS
sapply(DataSetUprivada, mode)
CodAlumno SemestresEstudiadosAcum
"numeric" "numeric"
CantCursosLlevadosAcum CursosLlevadosFueraCarreraAcum
"numeric" "numeric"
AvgSinAplzAcum AvgConAplzAcum
"numeric" "numeric"
CantCursosAplzAcum SumCredTeoAcum
"numeric" "numeric"
SumCredPraAcum edad
"numeric" "numeric"
SEXO AvgVezMatriAcum
"numeric" "numeric"
CarreraProfesional MODALIDAD_INGRESO
"numeric" "numeric"
ANIO_INGRESO UBIG_NACIMIENTO
"numeric" "numeric"
UBIG_RESIDENCIA TIPO_VIVIENDA
"numeric" "numeric"
GradoInstruccionPapa ProfesionPapa
"numeric" "numeric"
OcupacionPapa GradoInstruccionMama
"numeric" "numeric"
ProfesionMama OcupacionMama
"numeric" "numeric"
CantCursosAnulados categoria
"numeric" "numeric"
categoriaBinarizada ProbabDesercion
"numeric" "numeric"
summary(DataSetUprivada)#PODEMOS OBSERVAR EN EL POWER
CodAlumno SemestresEstudiadosAcum CantCursosLlevadosAcum
20000062092012-1: 1 Min. : 1.000 Min. : 1.00
20000062092012-2: 1 1st Qu.: 2.000 1st Qu.:11.00
20000062092013-1: 1 Median : 4.000 Median :20.00
20000062092013-2: 1 Mean : 4.187 Mean :23.17
20000063092012-1: 1 3rd Qu.: 6.000 3rd Qu.:33.00
20000063092012-2: 1 Max. :12.000 Max. :81.00
(Other) :35687
CursosLlevadosFueraCarreraAcum AvgSinAplzAcum AvgConAplzAcum
Min. : 1.000 11,00 : 123 12,00 : 176
1st Qu.: 2.000 12,00 : 122 11,00 : 155
Median : 4.000 10,33 : 121 11,67 : 121
Mean : 4.306 10,00 : 112 13,00 : 121
3rd Qu.: 6.000 10,67 : 106 11,33 : 117
Max. :18.000 13,00 : 104 10,67 : 112
(Other):35005 (Other):34891
CantCursosAplzAcum SumCredTeoAcum SumCredPraAcum edad SEXO
Min. : 0.000 Min. : 1.0 Min. : 0.00 Min. : 14.00 F: 9994
1st Qu.: 1.000 1st Qu.: 27.0 1st Qu.: 7.00 1st Qu.: 18.00 M:25699
Median : 3.000 Median : 50.0 Median :15.00 Median : 20.00
Mean : 5.247 Mean : 59.4 Mean :17.78 Mean : 20.55
3rd Qu.: 8.000 3rd Qu.: 85.0 3rd Qu.:25.00 3rd Qu.: 22.00
Max. :48.000 Max. :200.0 Max. :80.00 Max. :113.00
AvgVezMatriAcum CarreraProfesional
1,00 :18850 INGENIERIA INDUSTRIAL :8791
1,04 : 771 INGENIERIA MECANICA, MECANICA-ELECTRICA Y MECATRONICA:8528
1,03 : 718 INGENIERIA DE SISTEMAS :4537
1,07 : 690 INGENIERIA ELECTRONICA :3699
1,06 : 689 MEDICINA VETERINARIA Y ZOOTECNIA :3124
1,02 : 670 INGENIERIA DE MINAS :3119
(Other):13305 (Other) :3895
MODALIDAD_INGRESO ANIO_INGRESO UBIG_NACIMIENTO
Tercer Examen General :8524 Min. :2009 AREQUIPA :21072
Segundo Examen General :6259 1st Qu.:2011 PAUCARPATA: 1444
Primer Examen General :5818 Median :2012 JULIACA : 869
Centro Preuniversitario III:3417 Mean :2012 YANAHUARA : 707
Centro Preuniversitario I :2962 3rd Qu.:2014 ILO : 701
Centro Preuniversitario II :2962 Max. :2017 MOLLENDO : 655
(Other) :5751 (Other) :10245
UBIG_RESIDENCIA TIPO_VIVIENDA
JOSE LUIS BUSTAMANTE Y RIVERO: 5274 CASA :29859
CERRO COLORADO : 3949 DEPARTAMENTO: 5484
AREQUIPA : 3931 VECINDAD : 350
PAUCARPATA : 3272
CAYMA : 2701
YANAHUARA : 2381
(Other) :14185
GradoInstruccionPapa ProfesionPapa
SECUNDARIA COMPLETA :7703 OTROS :13173
SUPERIOR UNIV. COMPLETA :6279 PROFESION ... : 6469
SUPERIOR TECNICA COMPLETA:5469 CONTADOR : 2238
GRADUADO UNIVERSITARIO :4493 ADMINISTRADOR DE EMPRESAS: 1550
SUPERIOR UNIV. INCOMPLETA:4372 PROFESOR : 1479
NIVEL EDUCATIVO ... :1770 ABOGADO : 1313
(Other) :5607 (Other) : 9471
OcupacionPapa GradoInstruccionMama
EMPLEADO :10711 SECUNDARIA COMPLETA :8926
OTRO : 5305 SUPERIOR UNIV. COMPLETA :6048
OCUPACION ... : 3028 SUPERIOR TECNICA COMPLETA :5695
MICROEMPRESARIO : 2396 GRADUADO UNIVERSITARIO :4726
FF. POLICIALES : 2185 SUPERIOR UNIV. INCOMPLETA :3464
CONDUCTOR DE VEHICULO: 2182 EST. SUP. NO UNIVERSITARIOS:1674
(Other) : 9886 (Other) :5160
ProfesionMama OcupacionMama
OTROS :13518 AMA DE CASA :14746
PROFESION ... : 5909 EMPLEADO : 8825
ENFERMERA : 2976 OTRO : 3767
PROFESOR : 2966 COMERCIANTE MINORISTA: 2208
CONTADOR : 2400 OCUPACION ... : 1576
ADMINISTRADOR DE EMPRESAS: 871 MICROEMPRESARIO : 1558
(Other) : 7053 (Other) : 3013
CantCursosAnulados categoria categoriaBinarizada ProbabDesercion
Min. : 0.0000 CONTINUA :31076 Min. :0.0000 14,24 :7157
1st Qu.: 0.0000 DESERTOR : 1959 1st Qu.:0.0000 10,24 :5477
Median : 0.0000 EGRESADO : 1858 Median :0.0000 6,61 :4901
Mean : 0.2907 PROB.DESERTOR: 800 Mean :0.0773 5,87 :4037
3rd Qu.: 0.0000 3rd Qu.:0.0000 5,03 :3595
Max. :16.0000 Max. :1.0000 5,35 :2878
(Other):7648
summary(DataSetUprivada$CarreraProfesional)#PODEMOS OBSERVAR EN EL POWER
INGENIERIA AGRONOMICA
952
INGENIERIA AGRONOMICA Y AGRICOLA
551
INGENIERIA DE INDUSTRIA ALIMENTARIA
2392
INGENIERIA DE MINAS
3119
INGENIERIA DE SISTEMAS
4537
INGENIERIA ELECTRONICA
3699
INGENIERIA INDUSTRIAL
8791
INGENIERIA MECANICA, MECANICA-ELECTRICA Y MECATRONICA
8528
MEDICINA VETERINARIA Y ZOOTECNIA
3124
########################################################
########### PREPARACIÓN DE DATA POR VARIABLES ########
########################################################
###Converision para tipo de dato correcto
DataSetUPRIVADAFRMTO <-transform(DataSetUprivada,
SEXO = as.factor(as.character(SEXO)),
CarreraProfesional = as.factor(as.character(CarreraProfesional)),
MODALIDAD_INGRESO = as.factor(as.character(MODALIDAD_INGRESO)),
UBIG_NACIMIENTO = as.factor(as.character(UBIG_NACIMIENTO)),
UBIG_RESIDENCIA = as.factor(as.character(UBIG_RESIDENCIA)),
TIPO_VIVIENDA = as.factor(as.character(TIPO_VIVIENDA)),
GradoInstruccionPapa = as.factor(as.character(GradoInstruccionPapa)),
ProfesionPapa = as.factor(as.character(ProfesionPapa)),
OcupacionPapa = as.factor(as.character(OcupacionPapa)),
GradoInstruccionMama = as.factor(as.character(GradoInstruccionMama)),
ProfesionMama = as.factor(as.character(ProfesionMama)),
OcupacionMama = as.factor(as.character(OcupacionMama))
,categoriaBinarizada = as.factor(as.character(categoriaBinarizada))
)
DataSetUPRIVADAFRMTO[,'AvgSinAplzAcum'] <- as.numeric(sub(",", ".", DataSetUPRIVADAFRMTO[,'AvgSinAplzAcum']
, fixed = TRUE))
DataSetUPRIVADAFRMTO[,'AvgConAplzAcum'] <- as.numeric(sub(",", ".", DataSetUPRIVADAFRMTO[,'AvgConAplzAcum']
, fixed = TRUE))
DataSetUPRIVADAFRMTO[,'AvgVezMatriAcum'] <- as.numeric(sub(",", ".", DataSetUPRIVADAFRMTO[,'AvgVezMatriAcum']
, fixed = TRUE))
DataSetUPRIVADAFRMTO[,'ProbabDesercion'] <- as.numeric(sub(",", ".", DataSetUPRIVADAFRMTO[,'ProbabDesercion']
, fixed = TRUE))
##sapply(DataSetUPRIVADAFRMTO, mode)
ListVar.Categ <- c('SEXO','CarreraProfesional','MODALIDAD_INGRESO'
,'UBIG_NACIMIENTO','UBIG_RESIDENCIA','TIPO_VIVIENDA'
,'GradoInstruccionPapa','ProfesionPapa','OcupacionPapa'
,'GradoInstruccionMama','ProfesionMama','OcupacionMama') # 12
Var.Objetivo <- c('categoriaBinarizada') #c('categoria') # 1
ListVar.Continuas <- c('SemestresEstudiadosAcum'
,'CantCursosLlevadosAcum'
,'CursosLlevadosFueraCarreraAcum'
,'AvgSinAplzAcum','AvgConAplzAcum'
,'CantCursosAplzAcum'
,'SumCredTeoAcum'
,'SumCredPraAcum'
,'edad'
#T#,'AvgVezMatriAcum'
,'ANIO_INGRESO'
#T#,'CantCursosAnulados' # 12
,'ProbabDesercion'
)
Var.Identificacion <- c('CodAlumno') # 1
Var.TodasUprivada <- c(ListVar.Categ ,ListVar.Continuas , Var.Objetivo)
##############################################################################
# ###ORDENAMOS EL DATASET CRONOLOGICAMENTE
############################################################################
### ANTES
View(DataSetUPRIVADAFRMTO)
TotalFilas <- nrow(DataSetUPRIVADAFRMTO) #35687
SortUltimaFila=vector(mode='numeric', length=TotalFilas)
SortUltimaFila2=vector(mode='numeric', length=TotalFilas)
##Obtendremos las variables dle codigod el alumno para ordenar el dataset
NuevoDataSetUPRIVADAFRMTO = data.frame(DataSetUPRIVADAFRMTO, SortUltimaFila,SortUltimaFila2)
View(NuevoDataSetUPRIVADAFRMTO)
summary(NuevoDataSetUPRIVADAFRMTO)
CodAlumno SemestresEstudiadosAcum CantCursosLlevadosAcum
20000062092012-1: 1 Min. : 1.000 Min. : 1.00
20000062092012-2: 1 1st Qu.: 2.000 1st Qu.:11.00
20000062092013-1: 1 Median : 4.000 Median :20.00
20000062092013-2: 1 Mean : 4.187 Mean :23.17
20000063092012-1: 1 3rd Qu.: 6.000 3rd Qu.:33.00
20000063092012-2: 1 Max. :12.000 Max. :81.00
(Other) :35687
CursosLlevadosFueraCarreraAcum AvgSinAplzAcum AvgConAplzAcum
Min. : 1.000 Min. : 0.00 Min. : 0.00
1st Qu.: 2.000 1st Qu.: 8.91 1st Qu.: 9.36
Median : 4.000 Median :10.63 Median :11.06
Mean : 4.306 Mean :10.54 Mean :10.84
3rd Qu.: 6.000 3rd Qu.:12.32 3rd Qu.:12.52
Max. :18.000 Max. :19.66 Max. :19.66
CantCursosAplzAcum SumCredTeoAcum SumCredPraAcum edad SEXO
Min. : 0.000 Min. : 1.0 Min. : 0.00 Min. : 14.00 F: 9994
1st Qu.: 1.000 1st Qu.: 27.0 1st Qu.: 7.00 1st Qu.: 18.00 M:25699
Median : 3.000 Median : 50.0 Median :15.00 Median : 20.00
Mean : 5.247 Mean : 59.4 Mean :17.78 Mean : 20.55
3rd Qu.: 8.000 3rd Qu.: 85.0 3rd Qu.:25.00 3rd Qu.: 22.00
Max. :48.000 Max. :200.0 Max. :80.00 Max. :113.00
AvgVezMatriAcum CarreraProfesional
Min. :1.000 INGENIERIA INDUSTRIAL :8791
1st Qu.:1.000 INGENIERIA MECANICA, MECANICA-ELECTRICA Y MECATRONICA:8528
Median :1.000 INGENIERIA DE SISTEMAS :4537
Mean :1.138 INGENIERIA ELECTRONICA :3699
3rd Qu.:1.170 MEDICINA VETERINARIA Y ZOOTECNIA :3124
Max. :4.000 INGENIERIA DE MINAS :3119
(Other) :3895
MODALIDAD_INGRESO ANIO_INGRESO UBIG_NACIMIENTO
Tercer Examen General :8524 Min. :2009 AREQUIPA :21072
Segundo Examen General :6259 1st Qu.:2011 PAUCARPATA: 1444
Primer Examen General :5818 Median :2012 JULIACA : 869
Centro Preuniversitario III:3417 Mean :2012 YANAHUARA : 707
Centro Preuniversitario I :2962 3rd Qu.:2014 ILO : 701
Centro Preuniversitario II :2962 Max. :2017 MOLLENDO : 655
(Other) :5751 (Other) :10245
UBIG_RESIDENCIA TIPO_VIVIENDA
JOSE LUIS BUSTAMANTE Y RIVERO: 5274 CASA :29859
CERRO COLORADO : 3949 DEPARTAMENTO: 5484
AREQUIPA : 3931 VECINDAD : 350
PAUCARPATA : 3272
CAYMA : 2701
YANAHUARA : 2381
(Other) :14185
GradoInstruccionPapa ProfesionPapa
SECUNDARIA COMPLETA :7703 OTROS :13173
SUPERIOR UNIV. COMPLETA :6279 PROFESION ... : 6469
SUPERIOR TECNICA COMPLETA:5469 CONTADOR : 2238
GRADUADO UNIVERSITARIO :4493 ADMINISTRADOR DE EMPRESAS: 1550
SUPERIOR UNIV. INCOMPLETA:4372 PROFESOR : 1479
NIVEL EDUCATIVO ... :1770 ABOGADO : 1313
(Other) :5607 (Other) : 9471
OcupacionPapa GradoInstruccionMama
EMPLEADO :10711 SECUNDARIA COMPLETA :8926
OTRO : 5305 SUPERIOR UNIV. COMPLETA :6048
OCUPACION ... : 3028 SUPERIOR TECNICA COMPLETA :5695
MICROEMPRESARIO : 2396 GRADUADO UNIVERSITARIO :4726
FF. POLICIALES : 2185 SUPERIOR UNIV. INCOMPLETA :3464
CONDUCTOR DE VEHICULO: 2182 EST. SUP. NO UNIVERSITARIOS:1674
(Other) : 9886 (Other) :5160
ProfesionMama OcupacionMama
OTROS :13518 AMA DE CASA :14746
PROFESION ... : 5909 EMPLEADO : 8825
ENFERMERA : 2976 OTRO : 3767
PROFESOR : 2966 COMERCIANTE MINORISTA: 2208
CONTADOR : 2400 OCUPACION ... : 1576
ADMINISTRADOR DE EMPRESAS: 871 MICROEMPRESARIO : 1558
(Other) : 7053 (Other) : 3013
CantCursosAnulados categoria categoriaBinarizada ProbabDesercion
Min. : 0.0000 CONTINUA :31076 0:32934 Min. : 0.000
1st Qu.: 0.0000 DESERTOR : 1959 1: 2759 1st Qu.: 5.190
Median : 0.0000 EGRESADO : 1858 Median : 5.870
Mean : 0.2907 PROB.DESERTOR: 800 Mean : 7.729
3rd Qu.: 0.0000 3rd Qu.:10.240
Max. :16.0000 Max. :14.240
SortUltimaFila SortUltimaFila2
Min. :0 Min. :0
1st Qu.:0 1st Qu.:0
Median :0 Median :0
Mean :0 Mean :0
3rd Qu.:0 3rd Qu.:0
Max. :0 Max. :0
NuevoDataSetUPRIVADAFRMTO$SortUltimaFila=as.numeric( substr(NuevoDataSetUPRIVADAFRMTO$CodAlumno, 11, 14))
NuevoDataSetUPRIVADAFRMTO$SortUltimaFila2=as.numeric( substr(NuevoDataSetUPRIVADAFRMTO$CodAlumno, 16, 17))
###ORDENAMOS EL DATA SET
SortNuevoDataSetUPRIVADAFRMTO <- NuevoDataSetUPRIVADAFRMTO[order(NuevoDataSetUPRIVADAFRMTO$SortUltimaFila,NuevoDataSetUPRIVADAFRMTO$SortUltimaFila2),]
View(SortNuevoDataSetUPRIVADAFRMTO)
SortNuevoDataSetUPRIVADAFRMTO$SortUltimaFila <- NULL ##ELIMINARNOS LAS FILAS DE ORDENAMIENTO
SortNuevoDataSetUPRIVADAFRMTO$SortUltimaFila2 <- NULL ##ELIMINARNOS LAS FILAS DE ORDENAMIENTO
##Reemplamos en el dataset que se trabajarn los modelos
DataSetUPRIVADAFRMTO<-SortNuevoDataSetUPRIVADAFRMTO
Observamos el DATASET ordenado cronologicamente
# Resultado DESPUES
View(DataSetUPRIVADAFRMTO) #### EL NUEVO DATA SET SE ENCUENTRA ORDENADO CRONOLOGICAMENTE
ncol(DataSetUPRIVADAFRMTO)
[1] 28
Configuración para el modelo de entrenamiento
summary(DataSetUPRIVADAFRMTO$CarreraProfesional)
INGENIERIA AGRONOMICA
952
INGENIERIA AGRONOMICA Y AGRICOLA
551
INGENIERIA DE INDUSTRIA ALIMENTARIA
2392
INGENIERIA DE MINAS
3119
INGENIERIA DE SISTEMAS
4537
INGENIERIA ELECTRONICA
3699
INGENIERIA INDUSTRIAL
8791
INGENIERIA MECANICA, MECANICA-ELECTRICA Y MECATRONICA
8528
MEDICINA VETERINARIA Y ZOOTECNIA
3124
DataSetUPRIVADAFRMTO.RF <-DataSetUPRIVADAFRMTO[,Var.TodasUprivada] %>% filter(gsub("^\\s+|\\s+$", "",CarreraProfesional) =="INGENIERIA INDUSTRIAL" ) %>% droplevels
#Para que las variables se visualicen correctamente
for (variable in ListVar.Categ) { levels(DataSetUPRIVADAFRMTO.RF[,variable]) }
nrow(DataSetUPRIVADAFRMTO.RF)
[1] 8791
summary(DataSetUPRIVADAFRMTO.RF$CarreraProfesional)
INGENIERIA INDUSTRIAL
8791
DataSetUPRIVADAFRMTO.RF$CarreraProfesional <- NULL
# configurar función de control para Training
ctrl <- trainControl(method = "repeatedcv", number = 10, repeats = 10, summaryFunction = twoClassSummary, classProbs = TRUE)
DataSetUPRIVADAFRMTO.RF$categoriaBinarizada <- as.character(DataSetUPRIVADAFRMTO.RF$categoriaBinarizada)
DataSetUPRIVADAFRMTO.RF$categoriaBinarizada[DataSetUPRIVADAFRMTO.RF$categoriaBinarizada == "0"] <- "C0"### LOS QUE CONTINUAN
DataSetUPRIVADAFRMTO.RF$categoriaBinarizada[DataSetUPRIVADAFRMTO.RF$categoriaBinarizada == "1"] <- "C1"### LOS DESERTORES
DataSetUPRIVADAFRMTO.RF$categoriaBinarizada <- factor(DataSetUPRIVADAFRMTO.RF$categoriaBinarizada)
LUEGO DE ORDENAR PROCEDEMOS A ENTRENAR EL MODELO
####################################################
####PODEMOS OBSERVAR EL DESBALANCEO DE LAS CLASES
100*prop.table(table(DataSetUPRIVADAFRMTO.RF$categoriaBinarizada))
C0 C1
95.051757 4.948243
summary(DataSetUPRIVADAFRMTO.RF$categoriaBinarizada)
C0 C1
8356 435
##calculamos las filas para el entrenamiento
TotalFilas <- nrow(DataSetUPRIVADAFRMTO.RF)
#####Se tomara el 50% de las de la data para entremiento y el otro 50% sera para TEST
TrainFilas <- round(TotalFilas*0.5)
##VEMOS EL DATASET QUE SE UTILIZARA PARA ENTRENAR
View(DataSetUPRIVADAFRMTO.RF)
AQUI SE APLICAN LOS MODELOS Y SE MUESTRA SUS MATRICES DE CONFUSIÓN COMO REFERENCIA
##DENIFIMOS LOS NODOS DE ENTRENAMIENTP
x_trainRF <- DataSetUPRIVADAFRMTO.RF[ (1:TrainFilas),]
y_trainRF <- DataSetUPRIVADAFRMTO.RF[ (1:TrainFilas),'categoriaBinarizada']
##### DATOS PARA ENTRENAMIENTO
View(x_trainRF)
x_testRF <- DataSetUPRIVADAFRMTO.RF[ ((TrainFilas+1):TotalFilas),]
y_testRF <- DataSetUPRIVADAFRMTO.RF[((TrainFilas+1):TotalFilas),'categoriaBinarizada']
## configurarmos un paramtro de RamdomForest para tunear el modelo.
##### DATOS PARA TESTING
View(x_testRF)
tunegrid <- expand.grid(.mtry = c(sqrt(ncol(DataSetUPRIVADAFRMTO.RF))))
# Build down-sampled model
ctrl$sampling <- "down"
down_fit <- train(categoriaBinarizada ~ .,
data = x_trainRF,
method = "rf",
verbose = FALSE,
tuneGrid = tunegrid,
metric = "ROC",
trControl = ctrl)
summary(y_testRF)
C0 C1
4137 258
mc_PredictDownTuneGrid<- table(predict(down_fit,x_testRF),y_testRF)
mc_PredictDownTuneGrid
y_testRF
C0 C1
C0 3422 72
C1 715 186
cm_DownRF1 <- confusionMatrix(predict(down_fit,x_testRF), y_testRF)
cm_DownRF1$byClass
Sensitivity Specificity Pos Pred Value
0.8266860 0.7170543 0.9791011
Neg Pred Value Precision Recall
0.2050998 0.9791011 0.8266860
F1 Prevalence Detection Rate
0.8964613 0.9412969 0.7781570
Detection Prevalence Balanced Accuracy
0.7947668 0.7718701
# Build up-sampled model
ctrl$sampling <- "up"
up_fit <- train(categoriaBinarizada ~ .,
data = x_trainRF,
method = "rf",
verbose = FALSE,
metric = "ROC",
tuneGrid = tunegrid,
trControl = ctrl)
summary(y_testRF)
C0 C1
4137 258
mc_PredictUpTuneGrid<- table(predict(up_fit,x_testRF),y_testRF)
mc_PredictUpTuneGrid
y_testRF
C0 C1
C0 3872 127
C1 265 131
cm_UpRF1 <- confusionMatrix(predict(up_fit,x_testRF), y_testRF)
cm_UpRF1$byClass
Sensitivity Specificity Pos Pred Value
0.9364274 0.5116279 0.9685000
Neg Pred Value Precision Recall
0.3341772 0.9685000 0.9364274
F1 Prevalence Detection Rate
0.9521937 0.9412969 0.8814562
Detection Prevalence Balanced Accuracy
0.9101251 0.7240276
#################### #################### ####################
#################### NUEVOS
ctrl <- trainControl(method = "repeatedcv", number = 10, repeats = 10, verboseIter = FALSE)
# summary( DataSetUPRIVADAFRMTO.RF$categoriaBinarizada)
# summary(x_trainRF$categoriaBinarizada)
# summary(x_testRF$categoriaBinarizada)
ctrl$sampling <- "down"
set.seed(5627)
model_rf_under <- caret::train(categoriaBinarizada ~ ., data = x_trainRF,
method = "rf", preProcess = c("scale", "center"),
trControl = ctrl)
mc_originalUnder<- table(predict(model_rf_under,x_testRF), y_testRF)
mc_originalUnder
y_testRF
C0 C1
C0 3888 144
C1 249 114
cm_originalUnder <- confusionMatrix(predict(model_rf_under,x_testRF), y_testRF)
cm_originalUnder
Confusion Matrix and Statistics
Reference
Prediction C0 C1
C0 3883 146
C1 254 112
Accuracy : 0.909
95% CI : (0.9001, 0.9173)
No Information Rate : 0.9413
P-Value [Acc > NIR] : 1
Kappa : 0.3116
Mcnemar's Test P-Value : 8.795e-08
Sensitivity : 0.9386
Specificity : 0.4341
Pos Pred Value : 0.9638
Neg Pred Value : 0.3060
Prevalence : 0.9413
Detection Rate : 0.8835
Detection Prevalence : 0.9167
Balanced Accuracy : 0.6864
'Positive' Class : C0
###PRUEBA
ccmodelBayes <- caret::train(categoriaBinarizada ~ ., data=x_trainRF,'nb')
mc_ccmodelBayesCaret<- table(predict(ccmodelBayes,x_testRF), y_testRF)
mc_ccmodelBayesCaret
y_testRF
C0 C1
C0 4137 258
C1 0 0
cm_ccmodelBayesCaret <- confusionMatrix(predict(ccmodelBayes,x_testRF), y_testRF)
cm_ccmodelBayesCaret$byClass
Sensitivity Specificity Pos Pred Value
1.0000000 0.0000000 0.9412969
Neg Pred Value Precision Recall
NaN 0.9412969 1.0000000
F1 Prevalence Detection Rate
0.9697609 0.9412969 0.9412969
Detection Prevalence Balanced Accuracy
1.0000000 0.5000000
##### NAIVE BAYES ########
x_trainRF$categoriaBinarizada <- NULL
x_testRF$categoriaBinarizada <- NULL
###CON CARET
library(e1071)
modelBayes <- caret::train(x_trainRF,y_trainRF,'nb')
mc_modelBayesCaret<- table(predict(modelBayes,x_testRF), y_testRF)
mc_modelBayesCaret
y_testRF
C0 C1
C0 3387 183
C1 750 75
cm_modelBayesCaret <- confusionMatrix(predict(modelBayes,x_testRF), y_testRF)
cm_modelBayesCaret$byClass
Sensitivity Specificity Pos Pred Value
0.81870921 0.29069767 0.94873950
Neg Pred Value Precision Recall
0.09090909 0.94873950 0.81870921
F1 Prevalence Detection Rate
0.87894122 0.94129693 0.77064846
Detection Prevalence Balanced Accuracy
0.81228669 0.55470344
classificadorBayesiano <- naiveBayes(x_trainRF,y_trainRF)
mc_originalBayesiano<- table(predict(classificadorBayesiano,x_testRF), y_testRF)
mc_originalBayesiano
y_testRF
C0 C1
C0 3986 164
C1 151 94
cm_originalBayesiano <- confusionMatrix(predict(classificadorBayesiano,x_testRF), y_testRF)
cm_originalBayesiano
Confusion Matrix and Statistics
Reference
Prediction C0 C1
C0 3986 164
C1 151 94
Accuracy : 0.9283
95% CI : (0.9203, 0.9358)
No Information Rate : 0.9413
P-Value [Acc > NIR] : 0.9998
Kappa : 0.3358
Mcnemar's Test P-Value : 0.4990
Sensitivity : 0.9635
Specificity : 0.3643
Pos Pred Value : 0.9605
Neg Pred Value : 0.3837
Prevalence : 0.9413
Detection Rate : 0.9069
Detection Prevalence : 0.9443
Balanced Accuracy : 0.6639
'Positive' Class : C0
View(x_trainRF)
#################################################################################################################
################################### RESUMEN DE RESULTADOS #######################################################
# #################################################################################################################
# View(x_trainRF)
# View(y_trainRF)
# View(x_testRF)
# View(y_testRF)
# summary(x_testRF)
# summary(y_testRF)
# mc_originalBayesiano
models <- list( DownRF1 = down_fit,
UpRF1 = up_fit,
originalUnder = model_rf_under,
ccmodelBayesCaret = ccmodelBayes,
modelBayesCaret = modelBayes,
originalBayesiano = classificadorBayesiano
)
# resampling <- resamples(models)
# bwplot(resampling)
library(dplyr)
comparison <- data.frame(model = names(models), Sensitivity = rep(NA, length(models)),
Specificity = rep(NA, length(models)), Precision = rep(NA, length(models)),
Recall = rep(NA, length(models)), F1 = rep(NA, length(models)))
for (name in names(models)) {
switch(name,
DownRF1 ={rowModel<- 1},
UpRF1 ={rowModel<- 2}, #smote
originalUnder ={rowModel<- 3},
ccmodelBayesCaret = {rowModel<- 4},
modelBayesCaret = {rowModel<- 5},
originalBayesiano = {rowModel<- 6}
)
model <- get(paste0("cm_", name))
comparison[rowModel,'Precision' ] <-model$byClass["Precision"]
comparison[rowModel,'Sensitivity' ] <-model$byClass["Sensitivity"]
comparison[rowModel,'Specificity' ] <-model$byClass["Specificity"] ## IMPORTANTE
comparison[rowModel,'Recall' ] <-model$byClass["Recall"]
comparison[rowModel,'F1' ] <-model$byClass["F1"]
}
comparison
model Sensitivity Specificity Precision Recall F1
1 DownRF1 0.8266860 0.7170543 0.9791011 0.8266860 0.8964613
2 UpRF1 0.9364274 0.5116279 0.9685000 0.9364274 0.9521937
3 originalUnder 0.9386029 0.4341085 0.9637627 0.9386029 0.9510164
4 ccmodelBayesCaret 1.0000000 0.0000000 0.9412969 1.0000000 0.9697609
5 modelBayesCaret 0.8187092 0.2906977 0.9487395 0.8187092 0.8789412
6 originalBayesiano 0.9635001 0.3643411 0.9604819 0.9635001 0.9619887