# 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
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
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)
# 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)))
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
##