Introducción

image
image

Base De Datos

# install.packages("neuralnet")
library(neuralnet)
# install.packages("datasets")
library(datasets)
# install.packages("DataExplorer")
library(DataExplorer)
# install.packages("caret")
library(caret)
## Loading required package: ggplot2
## Loading required package: lattice

Código

examen <- c(20, 10, 30, 20, 80, 30)
proyecto <- c(90, 20, 40, 50, 50, 80)
estatus <- c(1, 0, 0, 0, 0, 1)

df <- data.frame(examen, proyecto, estatus = as.factor(estatus))

red_neuronal1 <- neuralnet(estatus ~ ., data = df)
plot(red_neuronal1, rep = "best")

prueba_examen <- c(30, 40, 85)
prueba_proyecto <- c(85, 50, 40)
prueba <- data.frame(prueba_examen, prueba_proyecto)

prediccion <- compute(red_neuronal1, prueba)
prediccion$net.result
##           [,1]      [,2]
## [1,] 0.6662205 0.3334106
## [2,] 0.6662205 0.3334106
## [3,] 0.6662205 0.3334106

Interpretación

summary(df)
##      examen         proyecto    estatus
##  Min.   :10.00   Min.   :20.0   0:4    
##  1st Qu.:20.00   1st Qu.:42.5   1:2    
##  Median :25.00   Median :50.0          
##  Mean   :31.67   Mean   :55.0          
##  3rd Qu.:30.00   3rd Qu.:72.5          
##  Max.   :80.00   Max.   :90.0
str(df)
## 'data.frame':    6 obs. of  3 variables:
##  $ examen  : num  20 10 30 20 80 30
##  $ proyecto: num  90 20 40 50 50 80
##  $ estatus : Factor w/ 2 levels "0","1": 2 1 1 1 1 2
head(df)
##   examen proyecto estatus
## 1     20       90       1
## 2     10       20       0
## 3     30       40       0
## 4     20       50       0
## 5     80       50       0
## 6     30       80       1
boxplot(df$examen, main = "Boxplot de Examen")

boxplot(df$proyecto, main = "Boxplot de Proyecto")

División de Datos

set.seed(123)
renglones_entrenamiento <- createDataPartition(df$estatus, p = 0.8, list = FALSE)
entrenamiento <- df[renglones_entrenamiento, ]
prueba_test <- df[-renglones_entrenamiento, ]

modelo de redes neuronales

modelo <- train(estatus ~ ., data = entrenamiento, method = "nnet", trControl = trainControl(method = "cv", number = 10))
## # weights:  5
## initial  value 2.832075 
## iter  10 value 0.462498
## iter  20 value 0.009535
## iter  30 value 0.005929
## iter  40 value 0.003953
## iter  50 value 0.002788
## iter  60 value 0.001870
## iter  70 value 0.001314
## iter  80 value 0.000892
## iter  90 value 0.000817
## iter 100 value 0.000600
## final  value 0.000600 
## stopped after 100 iterations
## # weights:  13
## initial  value 4.355912 
## iter  10 value 2.502076
## iter  20 value 2.502012
## final  value 2.502012 
## converged
## # weights:  21
## initial  value 3.401427 
## iter  10 value 0.173359
## iter  20 value 0.000237
## final  value 0.000061 
## converged
## # weights:  5
## initial  value 4.258836 
## iter  10 value 2.553205
## iter  20 value 2.038387
## final  value 2.038383 
## converged
## # weights:  13
## initial  value 3.457233 
## iter  10 value 2.564357
## final  value 2.560555 
## converged
## # weights:  21
## initial  value 4.129780 
## iter  10 value 2.386008
## iter  20 value 1.942128
## iter  30 value 1.766885
## iter  40 value 1.742247
## iter  50 value 1.729313
## iter  60 value 1.728379
## final  value 1.728378 
## converged
## # weights:  5
## initial  value 3.157746 
## iter  10 value 2.256073
## iter  20 value 0.136410
## iter  30 value 0.034630
## iter  40 value 0.031492
## iter  50 value 0.031371
## iter  60 value 0.031318
## iter  70 value 0.031314
## iter  80 value 0.031301
## iter  90 value 0.031301
## iter  90 value 0.031301
## iter  90 value 0.031301
## final  value 0.031301 
## converged
## # weights:  13
## initial  value 2.777786 
## iter  10 value 2.503295
## iter  20 value 2.502246
## iter  30 value 2.502165
## iter  40 value 2.502150
## final  value 2.502132 
## converged
## # weights:  21
## initial  value 4.008647 
## iter  10 value 2.502032
## iter  20 value 2.496439
## iter  30 value 0.032964
## iter  40 value 0.026841
## iter  50 value 0.025269
## iter  60 value 0.023764
## iter  70 value 0.021113
## iter  80 value 0.019444
## iter  90 value 0.018969
## iter 100 value 0.018134
## final  value 0.018134 
## stopped after 100 iterations
## # weights:  5
## initial  value 3.391723 
## final  value 3.365058 
## converged
## # weights:  13
## initial  value 3.388453 
## final  value 3.365059 
## converged
## # weights:  21
## initial  value 3.677569 
## iter  10 value 1.947047
## iter  20 value 1.909578
## final  value 1.909543 
## converged
## # weights:  5
## initial  value 4.231252 
## iter  10 value 3.374401
## final  value 3.374370 
## converged
## # weights:  13
## initial  value 3.829601 
## iter  10 value 2.147776
## iter  20 value 2.088575
## final  value 2.088571 
## converged
## # weights:  21
## initial  value 4.397747 
## iter  10 value 2.273824
## iter  20 value 1.940678
## iter  30 value 1.879731
## iter  40 value 1.777508
## iter  50 value 1.776482
## final  value 1.776479 
## converged
## # weights:  5
## initial  value 3.379767 
## final  value 3.365135 
## converged
## # weights:  13
## initial  value 3.454033 
## iter  10 value 0.219850
## iter  20 value 0.034312
## iter  30 value 0.019867
## iter  40 value 0.019314
## iter  50 value 0.018577
## iter  60 value 0.018353
## iter  70 value 0.018228
## iter  80 value 0.018184
## iter  90 value 0.018090
## iter 100 value 0.018060
## final  value 0.018060 
## stopped after 100 iterations
## # weights:  21
## initial  value 3.788157 
## iter  10 value 1.939123
## iter  20 value 1.919192
## iter  30 value 1.340629
## iter  40 value 0.044955
## iter  50 value 0.038862
## iter  60 value 0.029900
## iter  70 value 0.028578
## iter  80 value 0.028089
## iter  90 value 0.026497
## iter 100 value 0.023838
## final  value 0.023838 
## stopped after 100 iterations
## # weights:  5
## initial  value 3.744626 
## final  value 3.365058 
## converged
## # weights:  13
## initial  value 3.885317 
## iter  10 value 3.364959
## iter  20 value 3.165235
## iter  30 value 0.007042
## final  value 0.000062 
## converged
## # weights:  21
## initial  value 3.135828 
## iter  10 value 1.422842
## iter  20 value 0.066426
## iter  30 value 0.000129
## iter  30 value 0.000069
## iter  30 value 0.000069
## final  value 0.000069 
## converged
## # weights:  5
## initial  value 3.810879 
## iter  10 value 3.377102
## iter  10 value 3.377102
## iter  10 value 3.377102
## final  value 3.377102 
## converged
## # weights:  13
## initial  value 3.362294 
## iter  10 value 2.444048
## iter  20 value 2.150690
## iter  30 value 2.138232
## final  value 2.138226 
## converged
## # weights:  21
## initial  value 4.498487 
## iter  10 value 2.456760
## iter  20 value 2.103566
## iter  30 value 1.974209
## iter  40 value 1.866106
## iter  50 value 1.864397
## iter  60 value 1.864273
## final  value 1.864273 
## converged
## # weights:  5
## initial  value 4.122751 
## final  value 3.365131 
## converged
## # weights:  13
## initial  value 3.535109 
## iter  10 value 0.045784
## iter  20 value 0.030839
## iter  30 value 0.030203
## iter  40 value 0.029954
## iter  50 value 0.029718
## iter  60 value 0.029626
## iter  70 value 0.029608
## iter  80 value 0.029597
## iter  90 value 0.029573
## iter 100 value 0.029186
## final  value 0.029186 
## stopped after 100 iterations
## # weights:  21
## initial  value 4.503988 
## iter  10 value 1.422171
## iter  20 value 0.039718
## iter  30 value 0.034493
## iter  40 value 0.033476
## iter  50 value 0.030400
## iter  60 value 0.028966
## iter  70 value 0.025058
## iter  80 value 0.023489
## iter  90 value 0.020302
## iter 100 value 0.019740
## final  value 0.019740 
## stopped after 100 iterations
## # weights:  5
## initial  value 3.420634 
## iter  10 value 3.365061
## final  value 3.365059 
## converged
## # weights:  13
## initial  value 3.365660 
## final  value 3.365062 
## converged
## # weights:  21
## initial  value 3.574846 
## iter  10 value 2.885767
## iter  20 value 0.000226
## final  value 0.000066 
## converged
## # weights:  5
## initial  value 3.600516 
## iter  10 value 3.377112
## final  value 3.377111 
## converged
## # weights:  13
## initial  value 3.548733 
## iter  10 value 1.709421
## iter  20 value 1.699940
## final  value 1.699940 
## converged
## # weights:  21
## initial  value 3.984952 
## iter  10 value 2.099647
## iter  20 value 1.637972
## iter  30 value 1.337489
## iter  40 value 1.325086
## iter  50 value 1.324256
## final  value 1.324192 
## converged
## # weights:  5
## initial  value 3.527484 
## iter  10 value 3.365160
## final  value 3.365158 
## converged
## # weights:  13
## initial  value 3.009761 
## iter  10 value 0.030197
## iter  20 value 0.028153
## iter  30 value 0.027664
## iter  40 value 0.027265
## iter  50 value 0.027005
## iter  60 value 0.026885
## iter  70 value 0.026640
## iter  80 value 0.024818
## iter  90 value 0.021075
## iter 100 value 0.020179
## final  value 0.020179 
## stopped after 100 iterations
## # weights:  21
## initial  value 3.619170 
## iter  10 value 3.287346
## iter  20 value 0.047215
## iter  30 value 0.030924
## iter  40 value 0.028928
## iter  50 value 0.027375
## iter  60 value 0.026566
## iter  70 value 0.026154
## iter  80 value 0.026097
## iter  90 value 0.026021
## iter 100 value 0.026013
## final  value 0.026013 
## stopped after 100 iterations
## # weights:  5
## initial  value 3.613552 
## iter  10 value 3.365069
## final  value 3.365062 
## converged
## # weights:  13
## initial  value 3.369087 
## iter  10 value 3.365040
## iter  20 value 2.277196
## iter  30 value 2.249351
## iter  40 value 2.124899
## iter  50 value 0.031304
## final  value 0.000062 
## converged
## # weights:  21
## initial  value 3.316584 
## iter  10 value 0.633293
## iter  20 value 0.000970
## final  value 0.000061 
## converged
## # weights:  5
## initial  value 4.526803 
## iter  10 value 3.377120
## final  value 3.377118 
## converged
## # weights:  13
## initial  value 3.929544 
## iter  10 value 2.882717
## iter  20 value 2.142267
## iter  30 value 2.138478
## final  value 2.138256 
## converged
## # weights:  21
## initial  value 3.766250 
## iter  10 value 3.304493
## iter  20 value 2.192346
## iter  30 value 1.906523
## iter  40 value 1.846969
## iter  50 value 1.823752
## final  value 1.823748 
## converged
## # weights:  5
## initial  value 3.950653 
## iter  10 value 2.964331
## iter  20 value 0.031455
## iter  30 value 0.031301
## iter  40 value 0.031295
## iter  50 value 0.031288
## iter  60 value 0.031288
## iter  70 value 0.031287
## iter  80 value 0.031286
## iter  90 value 0.031286
## iter 100 value 0.031286
## final  value 0.031286 
## stopped after 100 iterations
## # weights:  13
## initial  value 5.044941 
## iter  10 value 3.365291
## iter  20 value 3.364334
## iter  30 value 0.743955
## iter  40 value 0.031938
## iter  50 value 0.030401
## iter  60 value 0.028982
## iter  70 value 0.028817
## iter  80 value 0.028792
## iter  90 value 0.028783
## iter 100 value 0.028776
## final  value 0.028776 
## stopped after 100 iterations
## # weights:  21
## initial  value 3.458972 
## iter  10 value 3.365358
## iter  20 value 3.365288
## iter  30 value 3.298590
## iter  40 value 0.036741
## iter  50 value 0.028915
## iter  60 value 0.028807
## iter  70 value 0.028327
## iter  80 value 0.027596
## iter  90 value 0.024645
## iter 100 value 0.022006
## final  value 0.022006 
## stopped after 100 iterations
## # weights:  5
## initial  value 4.059877 
## iter  10 value 0.219598
## iter  20 value 0.004361
## iter  30 value 0.000905
## iter  40 value 0.000485
## iter  50 value 0.000311
## iter  60 value 0.000268
## iter  70 value 0.000159
## iter  80 value 0.000109
## final  value 0.000074 
## converged
## # weights:  13
## initial  value 4.212163 
## iter  10 value 0.311232
## iter  20 value 0.000400
## final  value 0.000053 
## converged
## # weights:  21
## initial  value 3.055345 
## iter  10 value 0.851243
## iter  20 value 0.001151
## final  value 0.000073 
## converged
## # weights:  5
## initial  value 3.580174 
## final  value 2.593261 
## converged
## # weights:  13
## initial  value 3.691496 
## iter  10 value 1.719495
## iter  20 value 1.459034
## iter  30 value 1.384606
## iter  40 value 1.192892
## final  value 1.192818 
## converged
## # weights:  21
## initial  value 3.524554 
## iter  10 value 2.348408
## iter  20 value 1.275068
## iter  30 value 1.110899
## iter  40 value 1.065660
## iter  50 value 1.012128
## final  value 1.012127 
## converged
## # weights:  5
## initial  value 2.968285 
## iter  10 value 2.502196
## iter  20 value 2.502140
## final  value 2.502139 
## converged
## # weights:  13
## initial  value 2.948386 
## iter  10 value 1.348884
## iter  20 value 0.027341
## iter  30 value 0.026507
## iter  40 value 0.026017
## iter  50 value 0.024871
## iter  60 value 0.022659
## iter  70 value 0.020675
## iter  80 value 0.015816
## iter  90 value 0.015342
## iter 100 value 0.015048
## final  value 0.015048 
## stopped after 100 iterations
## # weights:  21
## initial  value 3.102144 
## iter  10 value 2.373935
## iter  20 value 0.046969
## iter  30 value 0.026710
## iter  40 value 0.025204
## iter  50 value 0.024380
## iter  60 value 0.024248
## iter  70 value 0.023071
## iter  80 value 0.019947
## iter  90 value 0.018269
## iter 100 value 0.016098
## final  value 0.016098 
## stopped after 100 iterations
## Warning in nominalTrainWorkflow(x = x, y = y, wts = weights, info = trainInfo,
## : There were missing values in resampled performance measures.
## # weights:  5
## initial  value 5.380633 
## iter  10 value 3.819616
## final  value 3.819214 
## converged
reultado_entrenamiento <- predict(modelo, entrenamiento)
resultado_prueba <- predict(modelo, prueba_test)

# Matriz de Confusion del Resultado del entrenamiento
mcre <- confusionMatrix(reultado_entrenamiento, entrenamiento$estatus)

# Matriz de Confusion del Resultado de la prueba
mcrp <- confusionMatrix(resultado_prueba, prueba_test$estatus)

Conclusiones

# Mostrar resultados de precisión para la conclusión
print(paste("Precisión del modelo en el conjunto de entrenamiento:", round(mcre$overall['Accuracy'], 4)))
print(paste("Precisión del modelo en el conjunto de prueba:", round(mcrp$overall['Accuracy'], 4)))

Mostrar matrices de confusión completas

mcre
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction 0 1
##          0 4 2
##          1 0 0
##                                           
##                Accuracy : 0.6667          
##                  95% CI : (0.2228, 0.9567)
##     No Information Rate : 0.6667          
##     P-Value [Acc > NIR] : 0.6804          
##                                           
##                   Kappa : 0               
##                                           
##  Mcnemar's Test P-Value : 0.4795          
##                                           
##             Sensitivity : 1.0000          
##             Specificity : 0.0000          
##          Pos Pred Value : 0.6667          
##          Neg Pred Value :    NaN          
##              Prevalence : 0.6667          
##          Detection Rate : 0.6667          
##    Detection Prevalence : 1.0000          
##       Balanced Accuracy : 0.5000          
##                                           
##        'Positive' Class : 0               
## 
mcrp
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction 0 1
##          0 0 0
##          1 0 0
##                                   
##                Accuracy : NaN     
##                  95% CI : (NA, NA)
##     No Information Rate : NA      
##     P-Value [Acc > NIR] : NA      
##                                   
##                   Kappa : NaN     
##                                   
##  Mcnemar's Test P-Value : NA      
##                                   
##             Sensitivity :  NA     
##             Specificity :  NA     
##          Pos Pred Value :  NA     
##          Neg Pred Value :  NA     
##              Prevalence : NaN     
##          Detection Rate : NaN     
##    Detection Prevalence : NaN     
##       Balanced Accuracy :  NA     
##                                   
##        'Positive' Class : 0       
##