Teoría

El paquete caret (Calsification and regression training) es un paquete integral con una amplia variedad de algoritmos para el aprendizaje automático.

Instalar paquetes y llamar librerías

# install.packages("caret") # Algoritmos de aprendizaje automático
library(caret)
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.3.2
## Loading required package: lattice
# install.packages("ggplot2") # Graficar con mejor diseño 
library(ggplot2)
# install.packages("lattice") # Crear gráficos
library(lattice)
# install.packages("datasets") # Usar la base de datos "Iris"
library(datasets) 
# install.packages("DataExplorer")
library(DataExplorer)
## Warning: package 'DataExplorer' was built under R version 4.3.2
#install.packages("mlbench")
library(mlbench)

Crear base de datos

data("BreastCancer")

df <- data.frame(BreastCancer)

Análisis Exploratorio

summary(df)
##       Id             Cl.thickness   Cell.size     Cell.shape  Marg.adhesion
##  Length:699         1      :145   1      :384   1      :353   1      :407  
##  Class :character   5      :130   10     : 67   2      : 59   2      : 58  
##  Mode  :character   3      :108   3      : 52   10     : 58   3      : 58  
##                     4      : 80   2      : 45   3      : 56   10     : 55  
##                     10     : 69   4      : 40   4      : 44   4      : 33  
##                     2      : 50   5      : 30   5      : 34   8      : 25  
##                     (Other):117   (Other): 81   (Other): 95   (Other): 63  
##   Epith.c.size  Bare.nuclei   Bl.cromatin  Normal.nucleoli    Mitoses   
##  2      :386   1      :402   2      :166   1      :443     1      :579  
##  3      : 72   10     :132   3      :165   10     : 61     2      : 35  
##  4      : 48   2      : 30   1      :152   3      : 44     3      : 33  
##  1      : 47   5      : 30   7      : 73   2      : 36     10     : 14  
##  6      : 41   3      : 28   4      : 40   8      : 24     4      : 12  
##  5      : 39   (Other): 61   5      : 34   6      : 22     7      :  9  
##  (Other): 66   NA's   : 16   (Other): 69   (Other): 69     (Other): 17  
##        Class    
##  benign   :458  
##  malignant:241  
##                 
##                 
##                 
##                 
## 
str(df)
## 'data.frame':    699 obs. of  11 variables:
##  $ Id             : chr  "1000025" "1002945" "1015425" "1016277" ...
##  $ Cl.thickness   : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 5 5 3 6 4 8 1 2 2 4 ...
##  $ Cell.size      : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 1 4 1 8 1 10 1 1 1 2 ...
##  $ Cell.shape     : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 1 4 1 8 1 10 1 2 1 1 ...
##  $ Marg.adhesion  : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 1 5 1 1 3 8 1 1 1 1 ...
##  $ Epith.c.size   : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 2 7 2 3 2 7 2 2 2 2 ...
##  $ Bare.nuclei    : Factor w/ 10 levels "1","2","3","4",..: 1 10 2 4 1 10 10 1 1 1 ...
##  $ Bl.cromatin    : Factor w/ 10 levels "1","2","3","4",..: 3 3 3 3 3 9 3 3 1 2 ...
##  $ Normal.nucleoli: Factor w/ 10 levels "1","2","3","4",..: 1 2 1 7 1 7 1 1 1 1 ...
##  $ Mitoses        : Factor w/ 9 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 5 1 ...
##  $ Class          : Factor w/ 2 levels "benign","malignant": 1 1 1 1 1 2 1 1 1 1 ...
# create_report(df)
sum(is.na(df))
## [1] 16
df <- na.omit(df)
df <- subset(df, select = -Id)
df$Class <- ifelse(df$Class == "benign", 1, 0)

df$Cl.thickness <- as.numeric(df$Cl.thickness)
df$Cell.size <- as.numeric(df$Cell.size)
df$Cell.shape <- as.numeric(df$Cell.shape)
df$Marg.adhesion <- as.numeric(df$Marg.adhesion)
df$Epith.c.size <- as.numeric(df$Epith.c.size)
df$Bare.nuclei <- as.numeric(df$Bare.nuclei)
df$Bl.cromatin <- as.numeric(df$Bl.cromatin)
df$Normal.nucleoli <- as.numeric(df$Normal.nucleoli)
df$Mitoses <- as.numeric(df$Mitoses)
df$Class <- as.factor(df$Class)

Nota: la variable que queremos predecir debe tener formato de factor.

Partir datos 80-20

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

Distintos tipos de Métodos para Modelar

Los métodos más utilizados para modelar aprendizajes automático son:

  • SVM: Support Vector Machine máquina de vectores de soporte. Hay varios subtipos: Lineal (svmlineal), Radial (svmRadial), Polinómico (svmPoly), etc.
  • Arbol de Decisión: rpart
  • Redes Neuronales: nnet
  • Random Forest o Bosques Aleatorios: rf

1. Modelo con el método svmLineal

modelo1 <- train(Class ~ ., data = entrenamiento, 
                method = "svmLinear",
                preProcess = c("scale", "center"),
                trControl = trainControl(method="cv", number = 10), 
                tuneGrid = data.frame(C=1) # Cuando es svmLineal
)

resultado_entrenamiento1 <- predict(modelo1, entrenamiento)
resultado_prueba1 <- predict(modelo1, prueba)

# Matriz de Confusión
mcre1 <- confusionMatrix(resultado_entrenamiento1, entrenamiento$Class) # Matriz de Confusión de Resultados del Entrenamiento 
mcre1
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 187  11
##          1   5 345
##                                          
##                Accuracy : 0.9708         
##                  95% CI : (0.953, 0.9832)
##     No Information Rate : 0.6496         
##     P-Value [Acc > NIR] : <2e-16         
##                                          
##                   Kappa : 0.9363         
##                                          
##  Mcnemar's Test P-Value : 0.2113         
##                                          
##             Sensitivity : 0.9740         
##             Specificity : 0.9691         
##          Pos Pred Value : 0.9444         
##          Neg Pred Value : 0.9857         
##              Prevalence : 0.3504         
##          Detection Rate : 0.3412         
##    Detection Prevalence : 0.3613         
##       Balanced Accuracy : 0.9715         
##                                          
##        'Positive' Class : 0              
## 
mcrp1 <-  confusionMatrix(resultado_prueba1, prueba$Class) # Matriz de Confusión de Resultados de la prueba
mcrp1
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction  0  1
##          0 44  1
##          1  3 87
##                                           
##                Accuracy : 0.9704          
##                  95% CI : (0.9259, 0.9919)
##     No Information Rate : 0.6519          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.9341          
##                                           
##  Mcnemar's Test P-Value : 0.6171          
##                                           
##             Sensitivity : 0.9362          
##             Specificity : 0.9886          
##          Pos Pred Value : 0.9778          
##          Neg Pred Value : 0.9667          
##              Prevalence : 0.3481          
##          Detection Rate : 0.3259          
##    Detection Prevalence : 0.3333          
##       Balanced Accuracy : 0.9624          
##                                           
##        'Positive' Class : 0               
## 

2. Modelo con el método svmRadial

modelo2 <- train(Class ~ ., data = entrenamiento, 
                method = "svmRadial",
                preProcess = c("scale", "center"),
                trControl = trainControl(method="cv", number = 10), 
                tuneGrid = data.frame(sigma = 1 , C=1) # Cambiar
)

resultado_entrenamiento2 <- predict(modelo2, entrenamiento)
resultado_prueba2 <- predict(modelo2, prueba)

# Matriz de Confusión
mcre2 <- confusionMatrix(resultado_entrenamiento2, entrenamiento$Class) # Matriz de Confusión de Resultados del Entrenamiento 
mcre2
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 192   2
##          1   0 354
##                                           
##                Accuracy : 0.9964          
##                  95% CI : (0.9869, 0.9996)
##     No Information Rate : 0.6496          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.992           
##                                           
##  Mcnemar's Test P-Value : 0.4795          
##                                           
##             Sensitivity : 1.0000          
##             Specificity : 0.9944          
##          Pos Pred Value : 0.9897          
##          Neg Pred Value : 1.0000          
##              Prevalence : 0.3504          
##          Detection Rate : 0.3504          
##    Detection Prevalence : 0.3540          
##       Balanced Accuracy : 0.9972          
##                                           
##        'Positive' Class : 0               
## 
mcrp2 <-  confusionMatrix(resultado_prueba2, prueba$Class) # Matriz de Confusión de Resultados de la prueba
mcrp2
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction  0  1
##          0 46  7
##          1  1 81
##                                           
##                Accuracy : 0.9407          
##                  95% CI : (0.8866, 0.9741)
##     No Information Rate : 0.6519          
##     P-Value [Acc > NIR] : 1.347e-15       
##                                           
##                   Kappa : 0.8732          
##                                           
##  Mcnemar's Test P-Value : 0.0771          
##                                           
##             Sensitivity : 0.9787          
##             Specificity : 0.9205          
##          Pos Pred Value : 0.8679          
##          Neg Pred Value : 0.9878          
##              Prevalence : 0.3481          
##          Detection Rate : 0.3407          
##    Detection Prevalence : 0.3926          
##       Balanced Accuracy : 0.9496          
##                                           
##        'Positive' Class : 0               
## 

3. Modelo con el método svmPoly

modelo3 <- train(Class ~ ., data = entrenamiento, 
                method = "svmPoly", 
                preProcess = c("scale", "center"),
                trControl = trainControl(method="cv", number = 10), 
                tuneGrid = data.frame(degree = 1 , scale = 1, C=1) # Cambiar
)

resultado_entrenamiento3 <- predict(modelo3, entrenamiento)
resultado_prueba3 <- predict(modelo3, prueba)

# Matriz de Confusión
mcre3 <- confusionMatrix(resultado_entrenamiento3, entrenamiento$Class) # Matriz de Confusión de Resultados del Entrenamiento 
mcre3
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 187  11
##          1   5 345
##                                          
##                Accuracy : 0.9708         
##                  95% CI : (0.953, 0.9832)
##     No Information Rate : 0.6496         
##     P-Value [Acc > NIR] : <2e-16         
##                                          
##                   Kappa : 0.9363         
##                                          
##  Mcnemar's Test P-Value : 0.2113         
##                                          
##             Sensitivity : 0.9740         
##             Specificity : 0.9691         
##          Pos Pred Value : 0.9444         
##          Neg Pred Value : 0.9857         
##              Prevalence : 0.3504         
##          Detection Rate : 0.3412         
##    Detection Prevalence : 0.3613         
##       Balanced Accuracy : 0.9715         
##                                          
##        'Positive' Class : 0              
## 
mcrp3 <-  confusionMatrix(resultado_prueba3, prueba$Class) # Matriz de Confusión de Resultados de la prueba
mcrp3
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction  0  1
##          0 44  1
##          1  3 87
##                                           
##                Accuracy : 0.9704          
##                  95% CI : (0.9259, 0.9919)
##     No Information Rate : 0.6519          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.9341          
##                                           
##  Mcnemar's Test P-Value : 0.6171          
##                                           
##             Sensitivity : 0.9362          
##             Specificity : 0.9886          
##          Pos Pred Value : 0.9778          
##          Neg Pred Value : 0.9667          
##              Prevalence : 0.3481          
##          Detection Rate : 0.3259          
##    Detection Prevalence : 0.3333          
##       Balanced Accuracy : 0.9624          
##                                           
##        'Positive' Class : 0               
## 

4. Modelo con el método rpart

modelo4 <- train(Class ~ ., data = entrenamiento, 
                method = "rpart", 
                preProcess = c("scale", "center"),
                trControl = trainControl(method="cv", number = 10),
                tuneLength = 10 # Cambiar
)

resultado_entrenamiento4 <- predict(modelo4, entrenamiento)
resultado_prueba4 <- predict(modelo4, prueba)

# Matriz de Confusión
mcre4 <- confusionMatrix(resultado_entrenamiento4, entrenamiento$Class) # Matriz de Confusión de Resultados del Entrenamiento 
mcre4
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 186  13
##          1   6 343
##                                          
##                Accuracy : 0.9653         
##                  95% CI : (0.9464, 0.979)
##     No Information Rate : 0.6496         
##     P-Value [Acc > NIR] : <2e-16         
##                                          
##                   Kappa : 0.9245         
##                                          
##  Mcnemar's Test P-Value : 0.1687         
##                                          
##             Sensitivity : 0.9688         
##             Specificity : 0.9635         
##          Pos Pred Value : 0.9347         
##          Neg Pred Value : 0.9828         
##              Prevalence : 0.3504         
##          Detection Rate : 0.3394         
##    Detection Prevalence : 0.3631         
##       Balanced Accuracy : 0.9661         
##                                          
##        'Positive' Class : 0              
## 
mcrp4 <-  confusionMatrix(resultado_prueba4, prueba$Class) # Matriz de Confusión de Resultados de la prueba
mcrp4
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction  0  1
##          0 43  6
##          1  4 82
##                                          
##                Accuracy : 0.9259         
##                  95% CI : (0.868, 0.9639)
##     No Information Rate : 0.6519         
##     P-Value [Acc > NIR] : 7.08e-14       
##                                          
##                   Kappa : 0.8384         
##                                          
##  Mcnemar's Test P-Value : 0.7518         
##                                          
##             Sensitivity : 0.9149         
##             Specificity : 0.9318         
##          Pos Pred Value : 0.8776         
##          Neg Pred Value : 0.9535         
##              Prevalence : 0.3481         
##          Detection Rate : 0.3185         
##    Detection Prevalence : 0.3630         
##       Balanced Accuracy : 0.9234         
##                                          
##        'Positive' Class : 0              
## 

5. Modelo con el método nnet

modelo5 <- train(Class ~ ., data = entrenamiento, 
                method = "nnet", 
                preProcess = c("scale", "center"),
                trControl = trainControl(method="cv", number = 10) # Cambiar
)
## # weights:  12
## initial  value 398.697981 
## iter  10 value 38.916261
## iter  20 value 38.799976
## iter  30 value 35.891392
## iter  40 value 34.730364
## iter  50 value 32.804953
## iter  60 value 32.783892
## iter  70 value 32.781308
## iter  80 value 32.779464
## iter  90 value 32.777403
## iter 100 value 32.776538
## final  value 32.776538 
## stopped after 100 iterations
## # weights:  34
## initial  value 326.971505 
## iter  10 value 34.992930
## iter  20 value 32.877195
## iter  30 value 29.610733
## iter  40 value 29.596490
## iter  50 value 29.593497
## iter  60 value 29.592608
## iter  70 value 29.591904
## iter  80 value 29.591880
## iter  90 value 29.591450
## iter  90 value 29.591450
## final  value 29.591450 
## converged
## # weights:  56
## initial  value 439.664312 
## iter  10 value 32.195328
## iter  20 value 18.741629
## iter  30 value 16.237027
## iter  40 value 15.495743
## iter  50 value 14.807564
## iter  60 value 14.292059
## iter  70 value 14.216993
## iter  80 value 14.197982
## iter  90 value 14.188802
## iter 100 value 14.180472
## final  value 14.180472 
## stopped after 100 iterations
## # weights:  12
## initial  value 413.714352 
## iter  10 value 55.517793
## iter  20 value 49.349272
## iter  30 value 48.796423
## iter  40 value 48.618673
## final  value 48.618665 
## converged
## # weights:  34
## initial  value 333.130947 
## iter  10 value 50.087615
## iter  20 value 42.802777
## iter  30 value 37.297926
## iter  40 value 36.695624
## iter  50 value 36.538864
## iter  60 value 36.531462
## final  value 36.531420 
## converged
## # weights:  56
## initial  value 316.353419 
## iter  10 value 37.645352
## iter  20 value 36.371645
## iter  30 value 36.163852
## iter  40 value 35.843769
## iter  50 value 34.667077
## iter  60 value 34.150765
## iter  70 value 34.146546
## final  value 34.146545 
## converged
## # weights:  12
## initial  value 385.754243 
## iter  10 value 36.172882
## iter  20 value 35.662421
## iter  30 value 32.933898
## iter  40 value 32.909414
## iter  50 value 32.900973
## iter  60 value 32.896553
## iter  70 value 32.891724
## iter  80 value 32.889530
## iter  90 value 32.887848
## iter 100 value 32.886042
## final  value 32.886042 
## stopped after 100 iterations
## # weights:  34
## initial  value 377.504191 
## iter  10 value 37.704021
## iter  20 value 31.167540
## iter  30 value 30.785804
## iter  40 value 30.655431
## iter  50 value 30.456611
## iter  60 value 30.057995
## iter  70 value 28.632691
## iter  80 value 28.522468
## iter  90 value 28.485310
## iter 100 value 28.476558
## final  value 28.476558 
## stopped after 100 iterations
## # weights:  56
## initial  value 338.231359 
## iter  10 value 30.031271
## iter  20 value 19.609973
## iter  30 value 15.268938
## iter  40 value 10.899995
## iter  50 value 7.731752
## iter  60 value 6.681825
## iter  70 value 5.721026
## iter  80 value 4.138489
## iter  90 value 3.083918
## iter 100 value 3.029580
## final  value 3.029580 
## stopped after 100 iterations
## # weights:  12
## initial  value 308.920461 
## iter  10 value 38.686740
## iter  20 value 30.616404
## iter  30 value 26.656342
## iter  40 value 26.601731
## iter  50 value 26.510653
## iter  60 value 26.501796
## iter  70 value 26.448768
## iter  80 value 26.417303
## iter  90 value 26.398434
## iter 100 value 26.348859
## final  value 26.348859 
## stopped after 100 iterations
## # weights:  34
## initial  value 353.435397 
## iter  10 value 29.990927
## iter  20 value 24.756669
## iter  30 value 21.484860
## iter  40 value 19.073127
## iter  50 value 17.988990
## iter  60 value 17.749387
## iter  70 value 17.218347
## iter  80 value 16.963581
## iter  90 value 16.842081
## iter 100 value 16.791004
## final  value 16.791004 
## stopped after 100 iterations
## # weights:  56
## initial  value 297.213553 
## iter  10 value 28.865518
## iter  20 value 17.726104
## iter  30 value 10.914897
## iter  40 value 9.210645
## iter  50 value 9.010663
## iter  60 value 8.699558
## iter  70 value 8.630005
## iter  80 value 8.552286
## iter  90 value 8.542477
## iter 100 value 8.540344
## final  value 8.540344 
## stopped after 100 iterations
## # weights:  12
## initial  value 310.493173 
## iter  10 value 53.657985
## iter  20 value 46.612388
## iter  30 value 46.356718
## final  value 46.356717 
## converged
## # weights:  34
## initial  value 352.570064 
## iter  10 value 64.381641
## iter  20 value 37.117782
## iter  30 value 36.047311
## iter  40 value 35.535884
## iter  50 value 35.519713
## final  value 35.519708 
## converged
## # weights:  56
## initial  value 408.673852 
## iter  10 value 55.616712
## iter  20 value 38.403285
## iter  30 value 34.848952
## iter  40 value 34.168808
## iter  50 value 34.065485
## iter  60 value 34.051264
## iter  70 value 34.039553
## iter  80 value 34.038878
## iter  90 value 33.936533
## iter 100 value 33.835867
## final  value 33.835867 
## stopped after 100 iterations
## # weights:  12
## initial  value 328.525317 
## iter  10 value 44.617254
## iter  20 value 38.898538
## iter  30 value 38.883621
## iter  40 value 38.864878
## iter  50 value 38.856908
## iter  60 value 38.847529
## iter  70 value 38.845166
## iter  80 value 38.842875
## iter  90 value 38.841660
## iter 100 value 38.840358
## final  value 38.840358 
## stopped after 100 iterations
## # weights:  34
## initial  value 310.839449 
## iter  10 value 39.541715
## iter  20 value 35.422816
## iter  30 value 30.942491
## iter  40 value 25.176399
## iter  50 value 22.845362
## iter  60 value 21.679695
## iter  70 value 21.437353
## iter  80 value 21.108669
## iter  90 value 21.059507
## iter 100 value 20.991742
## final  value 20.991742 
## stopped after 100 iterations
## # weights:  56
## initial  value 478.367036 
## iter  10 value 36.695710
## iter  20 value 26.986877
## iter  30 value 15.589863
## iter  40 value 10.743972
## iter  50 value 9.644528
## iter  60 value 9.135420
## iter  70 value 7.577326
## iter  80 value 7.432887
## iter  90 value 7.394541
## iter 100 value 7.348727
## final  value 7.348727 
## stopped after 100 iterations
## # weights:  12
## initial  value 342.777932 
## iter  10 value 50.839903
## iter  20 value 34.001653
## iter  30 value 33.740609
## iter  40 value 33.610520
## iter  50 value 33.310414
## iter  60 value 33.298890
## iter  70 value 33.238826
## iter  80 value 33.205856
## iter  90 value 33.205758
## iter 100 value 33.184575
## final  value 33.184575 
## stopped after 100 iterations
## # weights:  34
## initial  value 326.507118 
## iter  10 value 25.290938
## iter  20 value 19.940769
## iter  30 value 15.868790
## iter  40 value 13.884547
## iter  50 value 13.619267
## iter  60 value 13.563640
## iter  70 value 13.557308
## iter  80 value 13.540995
## iter  90 value 13.516090
## iter 100 value 13.508238
## final  value 13.508238 
## stopped after 100 iterations
## # weights:  56
## initial  value 332.208631 
## iter  10 value 35.282750
## iter  20 value 15.718835
## iter  30 value 8.348914
## iter  40 value 7.995759
## iter  50 value 7.925410
## iter  60 value 7.814947
## iter  70 value 7.312981
## iter  80 value 7.273626
## iter  90 value 7.249200
## iter 100 value 7.137288
## final  value 7.137288 
## stopped after 100 iterations
## # weights:  12
## initial  value 326.961008 
## iter  10 value 75.659626
## iter  20 value 56.413823
## iter  30 value 46.667102
## iter  40 value 46.386691
## final  value 46.386682 
## converged
## # weights:  34
## initial  value 320.634051 
## iter  10 value 49.196074
## iter  20 value 44.542012
## iter  30 value 42.810290
## iter  40 value 41.127159
## iter  50 value 38.550177
## iter  60 value 36.984427
## iter  70 value 36.937230
## final  value 36.937217 
## converged
## # weights:  56
## initial  value 333.095787 
## iter  10 value 42.001646
## iter  20 value 37.364165
## iter  30 value 35.840153
## iter  40 value 35.027157
## iter  50 value 33.792623
## iter  60 value 33.148545
## iter  70 value 33.027191
## iter  80 value 32.994483
## iter  90 value 32.993309
## iter 100 value 32.993262
## final  value 32.993262 
## stopped after 100 iterations
## # weights:  12
## initial  value 390.505167 
## iter  10 value 46.907262
## iter  20 value 37.300433
## iter  30 value 34.776589
## iter  40 value 34.019814
## iter  50 value 33.305306
## iter  60 value 33.273883
## iter  70 value 33.065909
## final  value 33.059886 
## converged
## # weights:  34
## initial  value 415.284033 
## iter  10 value 36.019954
## iter  20 value 27.281270
## iter  30 value 26.635746
## iter  40 value 26.554278
## iter  50 value 26.538329
## iter  60 value 26.529920
## iter  70 value 26.523009
## iter  80 value 26.515506
## iter  90 value 26.505556
## iter 100 value 26.494241
## final  value 26.494241 
## stopped after 100 iterations
## # weights:  56
## initial  value 425.681193 
## iter  10 value 26.825062
## iter  20 value 16.512161
## iter  30 value 14.660266
## iter  40 value 14.154621
## iter  50 value 13.989435
## iter  60 value 12.908514
## iter  70 value 12.830659
## iter  80 value 12.781454
## iter  90 value 12.731468
## iter 100 value 12.658006
## final  value 12.658006 
## stopped after 100 iterations
## # weights:  12
## initial  value 396.424622 
## iter  10 value 44.355043
## iter  20 value 36.820545
## iter  30 value 35.858148
## iter  40 value 35.846685
## iter  50 value 35.844172
## final  value 35.844160 
## converged
## # weights:  34
## initial  value 334.539569 
## iter  10 value 30.920404
## iter  20 value 19.105143
## iter  30 value 13.498508
## iter  40 value 12.798030
## iter  50 value 12.542690
## iter  60 value 12.337274
## iter  70 value 12.304074
## iter  80 value 12.303786
## final  value 12.303751 
## converged
## # weights:  56
## initial  value 380.225329 
## iter  10 value 29.861227
## iter  20 value 20.618442
## iter  30 value 14.290768
## iter  40 value 12.301394
## iter  50 value 12.074867
## iter  60 value 12.022325
## iter  70 value 11.959556
## iter  80 value 11.883326
## iter  90 value 11.876798
## iter 100 value 11.875785
## final  value 11.875785 
## stopped after 100 iterations
## # weights:  12
## initial  value 349.594525 
## iter  10 value 54.200114
## iter  20 value 49.212038
## iter  30 value 48.372354
## final  value 48.371349 
## converged
## # weights:  34
## initial  value 393.755111 
## iter  10 value 46.491877
## iter  20 value 38.143729
## iter  30 value 37.026446
## iter  40 value 36.289342
## iter  50 value 36.180764
## final  value 36.180367 
## converged
## # weights:  56
## initial  value 382.898410 
## iter  10 value 113.549238
## iter  20 value 45.334116
## iter  30 value 36.733185
## iter  40 value 35.669140
## iter  50 value 35.160287
## iter  60 value 34.622381
## iter  70 value 34.405987
## iter  80 value 34.393829
## iter  90 value 34.393394
## iter 100 value 34.393306
## final  value 34.393306 
## stopped after 100 iterations
## # weights:  12
## initial  value 398.243654 
## iter  10 value 108.040699
## iter  20 value 54.328770
## iter  30 value 39.802917
## iter  40 value 36.044553
## iter  50 value 35.970195
## iter  60 value 35.962346
## iter  70 value 35.959868
## iter  80 value 35.958060
## iter  90 value 35.956993
## iter 100 value 35.956351
## final  value 35.956351 
## stopped after 100 iterations
## # weights:  34
## initial  value 348.499279 
## iter  10 value 31.029645
## iter  20 value 25.456219
## iter  30 value 23.310011
## iter  40 value 23.162789
## iter  50 value 23.135904
## iter  60 value 23.111795
## iter  70 value 23.086877
## iter  80 value 23.061305
## iter  90 value 23.050580
## iter 100 value 23.043019
## final  value 23.043019 
## stopped after 100 iterations
## # weights:  56
## initial  value 479.998608 
## iter  10 value 28.429402
## iter  20 value 14.595137
## iter  30 value 11.201508
## iter  40 value 10.772120
## iter  50 value 10.642136
## iter  60 value 10.614477
## iter  70 value 10.548779
## iter  80 value 10.429821
## iter  90 value 6.209610
## iter 100 value 6.092511
## final  value 6.092511 
## stopped after 100 iterations
## # weights:  12
## initial  value 318.995581 
## iter  10 value 38.486987
## iter  20 value 35.961196
## iter  30 value 35.846040
## iter  40 value 35.839692
## iter  50 value 35.838384
## iter  60 value 35.837920
## iter  70 value 35.837706
## iter  80 value 35.837024
## iter  90 value 35.836557
## iter 100 value 35.835905
## final  value 35.835905 
## stopped after 100 iterations
## # weights:  34
## initial  value 330.992875 
## iter  10 value 32.762832
## iter  20 value 21.775183
## iter  30 value 18.694488
## iter  40 value 14.786226
## iter  50 value 12.138218
## iter  60 value 8.440254
## iter  70 value 8.065251
## iter  80 value 8.060194
## iter  90 value 8.059938
## iter  90 value 8.059938
## iter  90 value 8.059938
## final  value 8.059938 
## converged
## # weights:  56
## initial  value 365.447734 
## iter  10 value 53.218554
## iter  20 value 27.286978
## iter  30 value 23.666512
## iter  40 value 21.629312
## iter  50 value 15.363143
## iter  60 value 8.217156
## iter  70 value 6.928314
## iter  80 value 4.601743
## iter  90 value 1.918466
## iter 100 value 0.159959
## final  value 0.159959 
## stopped after 100 iterations
## # weights:  12
## initial  value 404.310186 
## iter  10 value 63.347807
## iter  20 value 43.470938
## iter  30 value 40.330369
## final  value 40.328317 
## converged
## # weights:  34
## initial  value 393.530131 
## iter  10 value 64.567824
## iter  20 value 36.884942
## iter  30 value 34.610119
## iter  40 value 33.892724
## iter  50 value 33.531169
## iter  60 value 33.516177
## iter  70 value 33.502010
## iter  80 value 33.501944
## final  value 33.501941 
## converged
## # weights:  56
## initial  value 320.802488 
## iter  10 value 41.161982
## iter  20 value 34.065467
## iter  30 value 32.460820
## iter  40 value 32.253851
## iter  50 value 31.807850
## iter  60 value 31.715921
## iter  70 value 31.667956
## iter  80 value 31.667662
## final  value 31.667662 
## converged
## # weights:  12
## initial  value 341.367588 
## iter  10 value 38.242785
## iter  20 value 31.683855
## iter  30 value 29.619740
## iter  40 value 28.094706
## iter  50 value 27.961073
## iter  60 value 27.947238
## iter  70 value 27.661892
## iter  80 value 27.661764
## iter  90 value 27.655238
## final  value 27.655236 
## converged
## # weights:  34
## initial  value 331.318346 
## iter  10 value 26.660915
## iter  20 value 20.862264
## iter  30 value 19.711772
## iter  40 value 19.630798
## iter  50 value 19.586675
## iter  60 value 19.572778
## iter  70 value 19.560701
## iter  80 value 19.553187
## iter  90 value 19.549753
## iter 100 value 19.545184
## final  value 19.545184 
## stopped after 100 iterations
## # weights:  56
## initial  value 473.022078 
## iter  10 value 28.151511
## iter  20 value 23.356634
## iter  30 value 21.671024
## iter  40 value 20.448188
## iter  50 value 20.157141
## iter  60 value 20.084440
## iter  70 value 20.027636
## iter  80 value 19.968133
## iter  90 value 19.935649
## iter 100 value 19.899601
## final  value 19.899601 
## stopped after 100 iterations
## # weights:  12
## initial  value 334.408190 
## iter  10 value 79.385300
## iter  20 value 42.217448
## iter  30 value 36.233504
## iter  40 value 33.630712
## iter  50 value 33.202459
## iter  60 value 33.116061
## iter  70 value 32.963504
## iter  80 value 32.877715
## iter  90 value 32.877459
## iter 100 value 32.825356
## final  value 32.825356 
## stopped after 100 iterations
## # weights:  34
## initial  value 344.631800 
## iter  10 value 31.964329
## iter  20 value 23.853520
## iter  30 value 20.611079
## iter  40 value 19.319039
## iter  50 value 18.868773
## iter  60 value 18.839168
## iter  70 value 18.837951
## iter  80 value 18.837702
## iter  90 value 18.837575
## final  value 18.837574 
## converged
## # weights:  56
## initial  value 408.196670 
## iter  10 value 28.341954
## iter  20 value 13.036678
## iter  30 value 7.855732
## iter  40 value 5.682467
## iter  50 value 5.367304
## iter  60 value 5.144385
## iter  70 value 5.126729
## iter  80 value 5.120703
## iter  90 value 5.118528
## iter 100 value 5.115059
## final  value 5.115059 
## stopped after 100 iterations
## # weights:  12
## initial  value 329.986125 
## iter  10 value 79.704193
## iter  20 value 56.415089
## iter  30 value 46.709702
## iter  40 value 46.108103
## final  value 46.107582 
## converged
## # weights:  34
## initial  value 328.245569 
## iter  10 value 53.369534
## iter  20 value 40.866540
## iter  30 value 37.755953
## iter  40 value 37.367734
## iter  50 value 37.220664
## iter  60 value 37.178872
## iter  70 value 37.178606
## final  value 37.178586 
## converged
## # weights:  56
## initial  value 454.539164 
## iter  10 value 38.644759
## iter  20 value 37.518511
## iter  30 value 36.765696
## iter  40 value 36.280674
## iter  50 value 35.468158
## iter  60 value 35.129403
## iter  70 value 35.119518
## iter  80 value 35.106676
## iter  90 value 35.106205
## final  value 35.106162 
## converged
## # weights:  12
## initial  value 313.809515 
## iter  10 value 42.416897
## iter  20 value 38.963013
## iter  30 value 38.844071
## iter  40 value 38.833132
## iter  50 value 38.827756
## iter  60 value 38.823725
## iter  70 value 38.821575
## iter  80 value 38.821011
## final  value 38.820547 
## converged
## # weights:  34
## initial  value 373.140339 
## iter  10 value 34.190037
## iter  20 value 29.220762
## iter  30 value 29.024769
## iter  40 value 28.989596
## iter  50 value 28.978826
## iter  60 value 28.967759
## iter  70 value 28.964341
## iter  80 value 28.953781
## iter  90 value 28.943163
## iter 100 value 28.935106
## final  value 28.935106 
## stopped after 100 iterations
## # weights:  56
## initial  value 456.286277 
## iter  10 value 33.043123
## iter  20 value 28.021793
## iter  30 value 25.080899
## iter  40 value 21.894929
## iter  50 value 21.732518
## iter  60 value 21.707501
## iter  70 value 21.357013
## iter  80 value 21.045551
## iter  90 value 20.524202
## iter 100 value 19.985985
## final  value 19.985985 
## stopped after 100 iterations
## # weights:  12
## initial  value 319.400513 
## iter  10 value 51.420766
## iter  20 value 28.068152
## iter  30 value 23.325820
## iter  40 value 22.817923
## iter  50 value 22.792940
## iter  60 value 22.792017
## final  value 22.791830 
## converged
## # weights:  34
## initial  value 336.123162 
## iter  10 value 30.555526
## iter  20 value 29.446128
## iter  30 value 25.003754
## iter  40 value 23.454267
## iter  50 value 19.996655
## iter  60 value 18.598351
## iter  70 value 17.963073
## iter  80 value 17.734462
## iter  90 value 17.613589
## iter 100 value 17.552761
## final  value 17.552761 
## stopped after 100 iterations
## # weights:  56
## initial  value 297.990920 
## iter  10 value 19.807317
## iter  20 value 9.357392
## iter  30 value 4.407808
## iter  40 value 3.927781
## iter  50 value 3.740458
## iter  60 value 3.282073
## iter  70 value 3.020757
## iter  80 value 2.668226
## iter  90 value 2.512064
## iter 100 value 2.506359
## final  value 2.506359 
## stopped after 100 iterations
## # weights:  12
## initial  value 365.555558 
## iter  10 value 50.071017
## iter  20 value 37.410947
## iter  30 value 37.269451
## iter  40 value 36.976540
## iter  50 value 36.931261
## iter  50 value 36.931260
## iter  50 value 36.931260
## final  value 36.931260 
## converged
## # weights:  34
## initial  value 461.404708 
## iter  10 value 52.176233
## iter  20 value 31.019929
## iter  30 value 28.739495
## iter  40 value 28.360392
## iter  50 value 28.322595
## final  value 28.322575 
## converged
## # weights:  56
## initial  value 535.884532 
## iter  10 value 30.741733
## iter  20 value 29.406655
## iter  30 value 27.798159
## iter  40 value 27.254774
## iter  50 value 27.236540
## iter  60 value 27.236017
## final  value 27.236012 
## converged
## # weights:  12
## initial  value 328.654982 
## iter  10 value 52.801883
## iter  20 value 34.617501
## iter  30 value 30.392721
## iter  40 value 26.721256
## iter  50 value 26.557384
## iter  60 value 26.552078
## iter  70 value 26.549838
## iter  80 value 26.545488
## iter  90 value 26.540146
## iter 100 value 26.539202
## final  value 26.539202 
## stopped after 100 iterations
## # weights:  34
## initial  value 292.257333 
## iter  10 value 23.300636
## iter  20 value 22.911492
## iter  30 value 22.823259
## iter  40 value 22.801147
## iter  50 value 22.491363
## iter  60 value 19.143080
## iter  70 value 19.097570
## iter  80 value 19.077340
## iter  90 value 18.694257
## iter 100 value 18.427787
## final  value 18.427787 
## stopped after 100 iterations
## # weights:  56
## initial  value 445.202945 
## iter  10 value 19.726901
## iter  20 value 16.776475
## iter  30 value 15.890269
## iter  40 value 15.689566
## iter  50 value 15.557951
## iter  60 value 14.422733
## iter  70 value 13.536910
## iter  80 value 12.820573
## iter  90 value 12.701810
## iter 100 value 12.634941
## final  value 12.634941 
## stopped after 100 iterations
## # weights:  12
## initial  value 384.085126 
## iter  10 value 41.199037
## iter  20 value 38.815942
## iter  30 value 38.648362
## iter  40 value 35.877174
## iter  50 value 35.852730
## iter  60 value 35.843194
## iter  70 value 35.842099
## iter  80 value 35.840599
## iter  90 value 35.839449
## iter 100 value 35.838069
## final  value 35.838069 
## stopped after 100 iterations
## # weights:  34
## initial  value 349.385815 
## iter  10 value 28.618128
## iter  20 value 20.819594
## iter  30 value 12.913642
## iter  40 value 5.932463
## iter  50 value 5.833368
## iter  60 value 5.831452
## iter  70 value 5.824661
## iter  80 value 5.824500
## iter  90 value 5.824316
## final  value 5.824315 
## converged
## # weights:  56
## initial  value 389.565367 
## iter  10 value 39.486616
## iter  20 value 19.537734
## iter  30 value 11.907730
## iter  40 value 10.810154
## iter  50 value 10.663255
## iter  60 value 10.566386
## iter  70 value 10.471933
## iter  80 value 10.351967
## iter  90 value 10.282889
## iter 100 value 10.221271
## final  value 10.221271 
## stopped after 100 iterations
## # weights:  12
## initial  value 382.875533 
## iter  10 value 83.920415
## iter  20 value 54.288718
## iter  30 value 43.394001
## iter  40 value 42.453583
## iter  50 value 41.472776
## final  value 41.472553 
## converged
## # weights:  34
## initial  value 318.109860 
## iter  10 value 37.480846
## iter  20 value 35.228840
## iter  30 value 35.115871
## iter  40 value 35.044836
## final  value 35.043640 
## converged
## # weights:  56
## initial  value 364.313155 
## iter  10 value 33.115775
## iter  20 value 30.329782
## iter  30 value 29.289416
## iter  40 value 29.048164
## iter  50 value 28.948550
## iter  60 value 28.868886
## iter  70 value 28.778125
## iter  80 value 28.724775
## final  value 28.724022 
## converged
## # weights:  12
## initial  value 318.453334 
## iter  10 value 33.112714
## iter  20 value 31.045995
## iter  30 value 30.474296
## iter  40 value 28.731666
## iter  50 value 27.299086
## iter  60 value 27.276535
## iter  70 value 27.255386
## iter  80 value 27.254419
## iter  90 value 27.253441
## iter 100 value 27.251416
## final  value 27.251416 
## stopped after 100 iterations
## # weights:  34
## initial  value 371.364289 
## iter  10 value 29.360603
## iter  20 value 26.172225
## iter  30 value 25.495486
## iter  40 value 25.443387
## iter  50 value 25.237951
## iter  60 value 24.675616
## iter  70 value 23.502374
## iter  80 value 20.274501
## iter  90 value 19.943151
## iter 100 value 19.289595
## final  value 19.289595 
## stopped after 100 iterations
## # weights:  56
## initial  value 376.172759 
## iter  10 value 23.205245
## iter  20 value 9.882168
## iter  30 value 6.410002
## iter  40 value 6.149141
## iter  50 value 5.746953
## iter  60 value 4.609458
## iter  70 value 2.879813
## iter  80 value 2.120263
## iter  90 value 0.915281
## iter 100 value 0.756020
## final  value 0.756020 
## stopped after 100 iterations
## # weights:  12
## initial  value 332.624415 
## iter  10 value 47.813604
## iter  20 value 44.504124
## iter  30 value 39.052678
## iter  40 value 38.853898
## iter  50 value 38.820116
## iter  60 value 38.810450
## iter  70 value 38.804754
## iter  80 value 38.802203
## iter  90 value 38.800070
## iter 100 value 38.796765
## final  value 38.796765 
## stopped after 100 iterations
## # weights:  34
## initial  value 369.349248 
## iter  10 value 39.349200
## iter  20 value 27.588482
## iter  30 value 23.240878
## iter  40 value 22.336274
## iter  50 value 21.954353
## iter  60 value 21.770509
## iter  70 value 21.670447
## iter  80 value 21.657598
## iter  90 value 21.620857
## iter 100 value 21.602053
## final  value 21.602053 
## stopped after 100 iterations
## # weights:  56
## initial  value 351.057802 
## iter  10 value 32.975645
## iter  20 value 20.788102
## iter  30 value 16.377304
## iter  40 value 16.019998
## iter  50 value 16.017444
## iter  60 value 16.005920
## iter  60 value 16.005920
## iter  60 value 16.005920
## final  value 16.005920 
## converged
## # weights:  12
## initial  value 344.598521 
## iter  10 value 56.803045
## iter  20 value 51.551732
## iter  30 value 49.651187
## iter  40 value 49.292831
## iter  40 value 49.292831
## iter  40 value 49.292831
## final  value 49.292831 
## converged
## # weights:  34
## initial  value 362.900807 
## iter  10 value 53.867862
## iter  20 value 44.629859
## iter  30 value 41.501559
## iter  40 value 40.074238
## iter  50 value 38.457121
## iter  60 value 38.129405
## iter  70 value 38.095275
## iter  80 value 38.093648
## final  value 38.093535 
## converged
## # weights:  56
## initial  value 348.519450 
## iter  10 value 48.528375
## iter  20 value 39.967361
## iter  30 value 37.962625
## iter  40 value 36.998507
## iter  50 value 36.806161
## iter  60 value 36.802835
## final  value 36.802822 
## converged
## # weights:  12
## initial  value 328.345633 
## iter  10 value 61.765012
## iter  20 value 54.164969
## iter  30 value 49.419285
## iter  40 value 42.684916
## iter  50 value 38.211568
## iter  60 value 36.122241
## iter  70 value 36.052780
## iter  80 value 36.042857
## iter  90 value 36.040315
## iter 100 value 36.037326
## final  value 36.037326 
## stopped after 100 iterations
## # weights:  34
## initial  value 339.331180 
## iter  10 value 34.678461
## iter  20 value 22.513699
## iter  30 value 15.792884
## iter  40 value 7.860213
## iter  50 value 6.434516
## iter  60 value 6.371622
## iter  70 value 6.314230
## iter  80 value 6.265785
## iter  90 value 6.180748
## iter 100 value 6.149116
## final  value 6.149116 
## stopped after 100 iterations
## # weights:  56
## initial  value 345.581414 
## iter  10 value 31.106280
## iter  20 value 16.368585
## iter  30 value 4.914761
## iter  40 value 3.236319
## iter  50 value 2.865856
## iter  60 value 2.783344
## iter  70 value 2.684775
## iter  80 value 2.624286
## iter  90 value 2.590358
## iter 100 value 2.546412
## final  value 2.546412 
## stopped after 100 iterations
## # weights:  12
## initial  value 322.741425 
## iter  10 value 53.645388
## iter  20 value 47.552530
## iter  30 value 41.662105
## iter  40 value 38.808063
## iter  50 value 38.802479
## final  value 38.797876 
## converged
## # weights:  34
## initial  value 325.587800 
## iter  10 value 32.996894
## iter  20 value 27.036432
## iter  30 value 22.064835
## iter  40 value 19.752793
## iter  50 value 19.720122
## iter  60 value 19.680315
## iter  70 value 19.519329
## iter  80 value 19.519074
## iter  90 value 19.240206
## iter 100 value 19.235470
## final  value 19.235470 
## stopped after 100 iterations
## # weights:  56
## initial  value 300.707060 
## iter  10 value 28.347003
## iter  20 value 17.340030
## iter  30 value 10.891374
## iter  40 value 10.630352
## iter  50 value 10.594789
## iter  60 value 10.502444
## iter  70 value 10.496886
## iter  80 value 10.496705
## iter  90 value 10.470416
## iter 100 value 10.468145
## final  value 10.468145 
## stopped after 100 iterations
## # weights:  12
## initial  value 368.906570 
## iter  10 value 67.495247
## iter  20 value 53.716750
## iter  30 value 48.161940
## final  value 48.120168 
## converged
## # weights:  34
## initial  value 303.880966 
## iter  10 value 53.559238
## iter  20 value 39.729784
## iter  30 value 37.214348
## iter  40 value 36.966309
## iter  50 value 36.942840
## iter  60 value 36.941196
## final  value 36.941194 
## converged
## # weights:  56
## initial  value 488.881087 
## iter  10 value 106.463939
## iter  20 value 41.920099
## iter  30 value 38.327594
## iter  40 value 36.806148
## iter  50 value 36.080936
## iter  60 value 35.474949
## iter  70 value 35.217379
## iter  80 value 35.206053
## iter  90 value 35.205784
## final  value 35.205776 
## converged
## # weights:  12
## initial  value 328.281196 
## iter  10 value 55.979766
## iter  20 value 39.260361
## iter  30 value 38.893298
## iter  40 value 38.889449
## iter  50 value 38.887916
## iter  60 value 38.885075
## iter  70 value 38.883551
## iter  80 value 38.883079
## iter  90 value 38.882786
## iter 100 value 38.882638
## final  value 38.882638 
## stopped after 100 iterations
## # weights:  34
## initial  value 339.639028 
## iter  10 value 36.635961
## iter  20 value 25.565579
## iter  30 value 20.685742
## iter  40 value 17.972740
## iter  50 value 17.639145
## iter  60 value 17.501850
## iter  70 value 17.459714
## iter  80 value 17.394904
## iter  90 value 17.337793
## iter 100 value 17.244632
## final  value 17.244632 
## stopped after 100 iterations
## # weights:  56
## initial  value 499.806262 
## iter  10 value 31.101730
## iter  20 value 19.729013
## iter  30 value 15.204951
## iter  40 value 13.172743
## iter  50 value 12.650130
## iter  60 value 12.490049
## iter  70 value 12.436885
## iter  80 value 12.375981
## iter  90 value 12.314392
## iter 100 value 12.273630
## final  value 12.273630 
## stopped after 100 iterations
## # weights:  12
## initial  value 400.843197 
## iter  10 value 45.770053
## iter  20 value 42.875782
## iter  30 value 42.795285
## iter  40 value 42.777247
## iter  50 value 42.775172
## iter  60 value 42.771905
## iter  70 value 42.769289
## iter  80 value 42.768943
## iter  90 value 42.767865
## iter 100 value 42.767454
## final  value 42.767454 
## stopped after 100 iterations
resultado_entrenamiento5 <- predict(modelo5, entrenamiento)
resultado_prueba5 <- predict(modelo5, prueba)

# Matriz de Confusión
mcre5 <- confusionMatrix(resultado_entrenamiento5, entrenamiento$Class) # Matriz de Confusión de Resultados del Entrenamiento 
mcre5
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 192  11
##          1   0 345
##                                           
##                Accuracy : 0.9799          
##                  95% CI : (0.9644, 0.9899)
##     No Information Rate : 0.6496          
##     P-Value [Acc > NIR] : < 2.2e-16       
##                                           
##                   Kappa : 0.9565          
##                                           
##  Mcnemar's Test P-Value : 0.002569        
##                                           
##             Sensitivity : 1.0000          
##             Specificity : 0.9691          
##          Pos Pred Value : 0.9458          
##          Neg Pred Value : 1.0000          
##              Prevalence : 0.3504          
##          Detection Rate : 0.3504          
##    Detection Prevalence : 0.3704          
##       Balanced Accuracy : 0.9846          
##                                           
##        'Positive' Class : 0               
## 
mcrp5 <-  confusionMatrix(resultado_prueba5, prueba$Class) # Matriz de Confusión de Resultados de la prueba
mcrp5
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction  0  1
##          0 46  4
##          1  1 84
##                                           
##                Accuracy : 0.963           
##                  95% CI : (0.9157, 0.9879)
##     No Information Rate : 0.6519          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.9196          
##                                           
##  Mcnemar's Test P-Value : 0.3711          
##                                           
##             Sensitivity : 0.9787          
##             Specificity : 0.9545          
##          Pos Pred Value : 0.9200          
##          Neg Pred Value : 0.9882          
##              Prevalence : 0.3481          
##          Detection Rate : 0.3407          
##    Detection Prevalence : 0.3704          
##       Balanced Accuracy : 0.9666          
##                                           
##        'Positive' Class : 0               
## 

6. Modelo con el método rf

modelo6 <- train(Class ~ ., data = entrenamiento, 
                method = "rf", 
                preProcess = c("scale", "center"),
                trControl = trainControl(method="cv", number = 10),
                tuneGrid = expand.grid(mtry = c(2,4,6))# Cambiar
)

resultado_entrenamiento6 <- predict(modelo6, entrenamiento)
resultado_prueba6 <- predict(modelo6, prueba)

# Matriz de Confusión
mcre6 <- confusionMatrix(resultado_entrenamiento6, entrenamiento$Class) # Matriz de Confusión de Resultados del Entrenamiento 
mcre6
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 192   0
##          1   0 356
##                                      
##                Accuracy : 1          
##                  95% CI : (0.9933, 1)
##     No Information Rate : 0.6496     
##     P-Value [Acc > NIR] : < 2.2e-16  
##                                      
##                   Kappa : 1          
##                                      
##  Mcnemar's Test P-Value : NA         
##                                      
##             Sensitivity : 1.0000     
##             Specificity : 1.0000     
##          Pos Pred Value : 1.0000     
##          Neg Pred Value : 1.0000     
##              Prevalence : 0.3504     
##          Detection Rate : 0.3504     
##    Detection Prevalence : 0.3504     
##       Balanced Accuracy : 1.0000     
##                                      
##        'Positive' Class : 0          
## 
mcrp6 <-  confusionMatrix(resultado_prueba6, prueba$Class) # Matriz de Confusión de Resultados de la prueba
mcrp6
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction  0  1
##          0 45  1
##          1  2 87
##                                           
##                Accuracy : 0.9778          
##                  95% CI : (0.9364, 0.9954)
##     No Information Rate : 0.6519          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.9508          
##                                           
##  Mcnemar's Test P-Value : 1               
##                                           
##             Sensitivity : 0.9574          
##             Specificity : 0.9886          
##          Pos Pred Value : 0.9783          
##          Neg Pred Value : 0.9775          
##              Prevalence : 0.3481          
##          Detection Rate : 0.3333          
##    Detection Prevalence : 0.3407          
##       Balanced Accuracy : 0.9730          
##                                           
##        'Positive' Class : 0               
## 

Resumen de Resultados

resultados <- data.frame(
  "svmLinear" = c(mcre1$overall["Accuracy"], mcrp1$overall["Accuracy"]),
  "svmRadial" = c(mcre2$overall["Accuracy"], mcrp2$overall["Accuracy"]),
    "svmPoly" = c(mcre3$overall["Accuracy"], mcrp3$overall["Accuracy"]),
      "rpart" = c(mcre4$overall["Accuracy"], mcrp4$overall["Accuracy"]),
        "nnet" = c(mcre5$overall["Accuracy"], mcrp5$overall["Accuracy"]),
          "rf" = c(mcre6$overall["Accuracy"], mcrp6$overall["Accuracy"])

)

resultados
##   svmLinear svmRadial   svmPoly     rpart     nnet        rf
## 1 0.9708029 0.9963504 0.9708029 0.9653285 0.979927 1.0000000
## 2 0.9703704 0.9407407 0.9703704 0.9259259 0.962963 0.9777778
LS0tCnRpdGxlOiAiUGFxdWV0ZSBDYXJldDogRWplcmNpY2lvIgphdXRob3I6ICJHaWxiZXJ0byBNZW5jaGFjYSBBMDExNzc4OTkiCmRhdGU6ICIyMDI0LTAyLTIwIgpvdXRwdXQ6IAogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IFRSVUUKICAgIHRvY19mbG9hdDogVFJVRQogICAgY29kZV9kb3dubG9hZDogVFJVRQogICAgdGhlbWU6IHNpbXBsZXgKLS0tCgohW10oL1VzZXJzL2xpZ2h0ZWRpdC9Eb2N1bWVudHMvVEVDIFNFTUVTVFJFIDYuMS9NMi9SL2NhcmV0L0JyZWFzdC1DYW5jZXItTG9nby5wbmcpCgojIFRlb3LDrWEgIApFbCBwYXF1ZXRlICAqY2FyZXQgKENhbHNpZmljYXRpb24gYW5kIHJlZ3Jlc3Npb24gdHJhaW5pbmcpKiBlcyB1biBwYXF1ZXRlIGludGVncmFsIGNvbiB1bmEgYW1wbGlhIHZhcmllZGFkIGRlIGFsZ29yaXRtb3MgcGFyYSBlbCBhcHJlbmRpemFqZSBhdXRvbcOhdGljby4gIAoKIyBJbnN0YWxhciBwYXF1ZXRlcyB5IGxsYW1hciBsaWJyZXLDrWFzIApgYGB7ciBtZXNzYWdlPVRSVUUsIHdhcm5pbmc9VFJVRX0KIyBpbnN0YWxsLnBhY2thZ2VzKCJjYXJldCIpICMgQWxnb3JpdG1vcyBkZSBhcHJlbmRpemFqZSBhdXRvbcOhdGljbwpsaWJyYXJ5KGNhcmV0KQojIGluc3RhbGwucGFja2FnZXMoImdncGxvdDIiKSAjIEdyYWZpY2FyIGNvbiBtZWpvciBkaXNlw7FvIApsaWJyYXJ5KGdncGxvdDIpCiMgaW5zdGFsbC5wYWNrYWdlcygibGF0dGljZSIpICMgQ3JlYXIgZ3LDoWZpY29zCmxpYnJhcnkobGF0dGljZSkKIyBpbnN0YWxsLnBhY2thZ2VzKCJkYXRhc2V0cyIpICMgVXNhciBsYSBiYXNlIGRlIGRhdG9zICJJcmlzIgpsaWJyYXJ5KGRhdGFzZXRzKSAKIyBpbnN0YWxsLnBhY2thZ2VzKCJEYXRhRXhwbG9yZXIiKQpsaWJyYXJ5KERhdGFFeHBsb3JlcikKI2luc3RhbGwucGFja2FnZXMoIm1sYmVuY2giKQpsaWJyYXJ5KG1sYmVuY2gpCmBgYAojIENyZWFyIGJhc2UgZGUgZGF0b3MgCmBgYHtyfQpkYXRhKCJCcmVhc3RDYW5jZXIiKQoKZGYgPC0gZGF0YS5mcmFtZShCcmVhc3RDYW5jZXIpCgpgYGAKCiMgQW7DoWxpc2lzIEV4cGxvcmF0b3JpbwpgYGB7cn0Kc3VtbWFyeShkZikKc3RyKGRmKQojIGNyZWF0ZV9yZXBvcnQoZGYpCnN1bShpcy5uYShkZikpCmRmIDwtIG5hLm9taXQoZGYpCmRmIDwtIHN1YnNldChkZiwgc2VsZWN0ID0gLUlkKQpkZiRDbGFzcyA8LSBpZmVsc2UoZGYkQ2xhc3MgPT0gImJlbmlnbiIsIDEsIDApCgpkZiRDbC50aGlja25lc3MgPC0gYXMubnVtZXJpYyhkZiRDbC50aGlja25lc3MpCmRmJENlbGwuc2l6ZSA8LSBhcy5udW1lcmljKGRmJENlbGwuc2l6ZSkKZGYkQ2VsbC5zaGFwZSA8LSBhcy5udW1lcmljKGRmJENlbGwuc2hhcGUpCmRmJE1hcmcuYWRoZXNpb24gPC0gYXMubnVtZXJpYyhkZiRNYXJnLmFkaGVzaW9uKQpkZiRFcGl0aC5jLnNpemUgPC0gYXMubnVtZXJpYyhkZiRFcGl0aC5jLnNpemUpCmRmJEJhcmUubnVjbGVpIDwtIGFzLm51bWVyaWMoZGYkQmFyZS5udWNsZWkpCmRmJEJsLmNyb21hdGluIDwtIGFzLm51bWVyaWMoZGYkQmwuY3JvbWF0aW4pCmRmJE5vcm1hbC5udWNsZW9saSA8LSBhcy5udW1lcmljKGRmJE5vcm1hbC5udWNsZW9saSkKZGYkTWl0b3NlcyA8LSBhcy5udW1lcmljKGRmJE1pdG9zZXMpCmRmJENsYXNzIDwtIGFzLmZhY3RvcihkZiRDbGFzcykKYGBgCioqTm90YTogbGEgdmFyaWFibGUgcXVlIHF1ZXJlbW9zIHByZWRlY2lyIGRlYmUgdGVuZXIgZm9ybWF0byBkZSBmYWN0b3IuKioKCiMgUGFydGlyIGRhdG9zIDgwLTIwCmBgYHtyfQpzZXQuc2VlZCgxMjMpCnJlbmdsb25lc19lbnRyZW5hbWllbnRvIDwtIGNyZWF0ZURhdGFQYXJ0aXRpb24oZGYkQ2xhc3MsIHA9MC44LCBsaXN0ID0gRkFMU0UpCmVudHJlbmFtaWVudG8gPC0gZGZbcmVuZ2xvbmVzX2VudHJlbmFtaWVudG8sIF0KcHJ1ZWJhIDwtIGRmWy1yZW5nbG9uZXNfZW50cmVuYW1pZW50bywgXQpgYGAKIAojIERpc3RpbnRvcyB0aXBvcyBkZSBNw6l0b2RvcyBwYXJhIE1vZGVsYXIgCkxvcyBtw6l0b2RvcyBtw6FzIHV0aWxpemFkb3MgcGFyYSBtb2RlbGFyIGFwcmVuZGl6YWplcyBhdXRvbcOhdGljbyBzb246ICAKCiogKipTVk0qKjogKlN1cHBvcnQgVmVjdG9yIE1hY2hpbmUqIG3DoXF1aW5hIGRlIHZlY3RvcmVzIGRlIHNvcG9ydGUuIEhheSB2YXJpb3Mgc3VidGlwb3M6IExpbmVhbCAoc3ZtbGluZWFsKSwgUmFkaWFsIChzdm1SYWRpYWwpLCBQb2xpbsOzbWljbyAoc3ZtUG9seSksIGV0Yy4gIAoqICoqQXJib2wgZGUgRGVjaXNpw7NuKio6IHJwYXJ0CiogKipSZWRlcyBOZXVyb25hbGVzKio6IG5uZXQKKiAqKlJhbmRvbSBGb3Jlc3QqKiBvIEJvc3F1ZXMgQWxlYXRvcmlvczogcmYKCiMgMS4gTW9kZWxvIGNvbiBlbCBtw6l0b2RvIHN2bUxpbmVhbApgYGB7cn0KbW9kZWxvMSA8LSB0cmFpbihDbGFzcyB+IC4sIGRhdGEgPSBlbnRyZW5hbWllbnRvLCAKICAgICAgICAgICAgICAgIG1ldGhvZCA9ICJzdm1MaW5lYXIiLAogICAgICAgICAgICAgICAgcHJlUHJvY2VzcyA9IGMoInNjYWxlIiwgImNlbnRlciIpLAogICAgICAgICAgICAgICAgdHJDb250cm9sID0gdHJhaW5Db250cm9sKG1ldGhvZD0iY3YiLCBudW1iZXIgPSAxMCksIAogICAgICAgICAgICAgICAgdHVuZUdyaWQgPSBkYXRhLmZyYW1lKEM9MSkgIyBDdWFuZG8gZXMgc3ZtTGluZWFsCikKCnJlc3VsdGFkb19lbnRyZW5hbWllbnRvMSA8LSBwcmVkaWN0KG1vZGVsbzEsIGVudHJlbmFtaWVudG8pCnJlc3VsdGFkb19wcnVlYmExIDwtIHByZWRpY3QobW9kZWxvMSwgcHJ1ZWJhKQoKIyBNYXRyaXogZGUgQ29uZnVzacOzbgptY3JlMSA8LSBjb25mdXNpb25NYXRyaXgocmVzdWx0YWRvX2VudHJlbmFtaWVudG8xLCBlbnRyZW5hbWllbnRvJENsYXNzKSAjIE1hdHJpeiBkZSBDb25mdXNpw7NuIGRlIFJlc3VsdGFkb3MgZGVsIEVudHJlbmFtaWVudG8gCm1jcmUxCm1jcnAxIDwtICBjb25mdXNpb25NYXRyaXgocmVzdWx0YWRvX3BydWViYTEsIHBydWViYSRDbGFzcykgIyBNYXRyaXogZGUgQ29uZnVzacOzbiBkZSBSZXN1bHRhZG9zIGRlIGxhIHBydWViYQptY3JwMQoKCgoKYGBgCiMgMi4gTW9kZWxvIGNvbiBlbCBtw6l0b2RvIHN2bVJhZGlhbApgYGB7cn0KbW9kZWxvMiA8LSB0cmFpbihDbGFzcyB+IC4sIGRhdGEgPSBlbnRyZW5hbWllbnRvLCAKICAgICAgICAgICAgICAgIG1ldGhvZCA9ICJzdm1SYWRpYWwiLAogICAgICAgICAgICAgICAgcHJlUHJvY2VzcyA9IGMoInNjYWxlIiwgImNlbnRlciIpLAogICAgICAgICAgICAgICAgdHJDb250cm9sID0gdHJhaW5Db250cm9sKG1ldGhvZD0iY3YiLCBudW1iZXIgPSAxMCksIAogICAgICAgICAgICAgICAgdHVuZUdyaWQgPSBkYXRhLmZyYW1lKHNpZ21hID0gMSAsIEM9MSkgIyBDYW1iaWFyCikKCnJlc3VsdGFkb19lbnRyZW5hbWllbnRvMiA8LSBwcmVkaWN0KG1vZGVsbzIsIGVudHJlbmFtaWVudG8pCnJlc3VsdGFkb19wcnVlYmEyIDwtIHByZWRpY3QobW9kZWxvMiwgcHJ1ZWJhKQoKIyBNYXRyaXogZGUgQ29uZnVzacOzbgptY3JlMiA8LSBjb25mdXNpb25NYXRyaXgocmVzdWx0YWRvX2VudHJlbmFtaWVudG8yLCBlbnRyZW5hbWllbnRvJENsYXNzKSAjIE1hdHJpeiBkZSBDb25mdXNpw7NuIGRlIFJlc3VsdGFkb3MgZGVsIEVudHJlbmFtaWVudG8gCm1jcmUyCm1jcnAyIDwtICBjb25mdXNpb25NYXRyaXgocmVzdWx0YWRvX3BydWViYTIsIHBydWViYSRDbGFzcykgIyBNYXRyaXogZGUgQ29uZnVzacOzbiBkZSBSZXN1bHRhZG9zIGRlIGxhIHBydWViYQptY3JwMgoKCgoKYGBgCgoKIyAzLiBNb2RlbG8gY29uIGVsIG3DqXRvZG8gc3ZtUG9seQpgYGB7cn0KbW9kZWxvMyA8LSB0cmFpbihDbGFzcyB+IC4sIGRhdGEgPSBlbnRyZW5hbWllbnRvLCAKICAgICAgICAgICAgICAgIG1ldGhvZCA9ICJzdm1Qb2x5IiwgCiAgICAgICAgICAgICAgICBwcmVQcm9jZXNzID0gYygic2NhbGUiLCAiY2VudGVyIiksCiAgICAgICAgICAgICAgICB0ckNvbnRyb2wgPSB0cmFpbkNvbnRyb2wobWV0aG9kPSJjdiIsIG51bWJlciA9IDEwKSwgCiAgICAgICAgICAgICAgICB0dW5lR3JpZCA9IGRhdGEuZnJhbWUoZGVncmVlID0gMSAsIHNjYWxlID0gMSwgQz0xKSAjIENhbWJpYXIKKQoKcmVzdWx0YWRvX2VudHJlbmFtaWVudG8zIDwtIHByZWRpY3QobW9kZWxvMywgZW50cmVuYW1pZW50bykKcmVzdWx0YWRvX3BydWViYTMgPC0gcHJlZGljdChtb2RlbG8zLCBwcnVlYmEpCgojIE1hdHJpeiBkZSBDb25mdXNpw7NuCm1jcmUzIDwtIGNvbmZ1c2lvbk1hdHJpeChyZXN1bHRhZG9fZW50cmVuYW1pZW50bzMsIGVudHJlbmFtaWVudG8kQ2xhc3MpICMgTWF0cml6IGRlIENvbmZ1c2nDs24gZGUgUmVzdWx0YWRvcyBkZWwgRW50cmVuYW1pZW50byAKbWNyZTMKbWNycDMgPC0gIGNvbmZ1c2lvbk1hdHJpeChyZXN1bHRhZG9fcHJ1ZWJhMywgcHJ1ZWJhJENsYXNzKSAjIE1hdHJpeiBkZSBDb25mdXNpw7NuIGRlIFJlc3VsdGFkb3MgZGUgbGEgcHJ1ZWJhCm1jcnAzCgoKCgpgYGAKCiMgNC4gTW9kZWxvIGNvbiBlbCBtw6l0b2RvIHJwYXJ0CmBgYHtyfQptb2RlbG80IDwtIHRyYWluKENsYXNzIH4gLiwgZGF0YSA9IGVudHJlbmFtaWVudG8sIAogICAgICAgICAgICAgICAgbWV0aG9kID0gInJwYXJ0IiwgCiAgICAgICAgICAgICAgICBwcmVQcm9jZXNzID0gYygic2NhbGUiLCAiY2VudGVyIiksCiAgICAgICAgICAgICAgICB0ckNvbnRyb2wgPSB0cmFpbkNvbnRyb2wobWV0aG9kPSJjdiIsIG51bWJlciA9IDEwKSwKICAgICAgICAgICAgICAgIHR1bmVMZW5ndGggPSAxMCAjIENhbWJpYXIKKQoKcmVzdWx0YWRvX2VudHJlbmFtaWVudG80IDwtIHByZWRpY3QobW9kZWxvNCwgZW50cmVuYW1pZW50bykKcmVzdWx0YWRvX3BydWViYTQgPC0gcHJlZGljdChtb2RlbG80LCBwcnVlYmEpCgojIE1hdHJpeiBkZSBDb25mdXNpw7NuCm1jcmU0IDwtIGNvbmZ1c2lvbk1hdHJpeChyZXN1bHRhZG9fZW50cmVuYW1pZW50bzQsIGVudHJlbmFtaWVudG8kQ2xhc3MpICMgTWF0cml6IGRlIENvbmZ1c2nDs24gZGUgUmVzdWx0YWRvcyBkZWwgRW50cmVuYW1pZW50byAKbWNyZTQKbWNycDQgPC0gIGNvbmZ1c2lvbk1hdHJpeChyZXN1bHRhZG9fcHJ1ZWJhNCwgcHJ1ZWJhJENsYXNzKSAjIE1hdHJpeiBkZSBDb25mdXNpw7NuIGRlIFJlc3VsdGFkb3MgZGUgbGEgcHJ1ZWJhCm1jcnA0CgoKCgpgYGAKCgojIDUuIE1vZGVsbyBjb24gZWwgbcOpdG9kbyBubmV0CmBgYHtyIG1lc3NhZ2U9VFJVRSwgd2FybmluZz1UUlVFfQptb2RlbG81IDwtIHRyYWluKENsYXNzIH4gLiwgZGF0YSA9IGVudHJlbmFtaWVudG8sIAogICAgICAgICAgICAgICAgbWV0aG9kID0gIm5uZXQiLCAKICAgICAgICAgICAgICAgIHByZVByb2Nlc3MgPSBjKCJzY2FsZSIsICJjZW50ZXIiKSwKICAgICAgICAgICAgICAgIHRyQ29udHJvbCA9IHRyYWluQ29udHJvbChtZXRob2Q9ImN2IiwgbnVtYmVyID0gMTApICMgQ2FtYmlhcgopCgpyZXN1bHRhZG9fZW50cmVuYW1pZW50bzUgPC0gcHJlZGljdChtb2RlbG81LCBlbnRyZW5hbWllbnRvKQpyZXN1bHRhZG9fcHJ1ZWJhNSA8LSBwcmVkaWN0KG1vZGVsbzUsIHBydWViYSkKCiMgTWF0cml6IGRlIENvbmZ1c2nDs24KbWNyZTUgPC0gY29uZnVzaW9uTWF0cml4KHJlc3VsdGFkb19lbnRyZW5hbWllbnRvNSwgZW50cmVuYW1pZW50byRDbGFzcykgIyBNYXRyaXogZGUgQ29uZnVzacOzbiBkZSBSZXN1bHRhZG9zIGRlbCBFbnRyZW5hbWllbnRvIAptY3JlNQptY3JwNSA8LSAgY29uZnVzaW9uTWF0cml4KHJlc3VsdGFkb19wcnVlYmE1LCBwcnVlYmEkQ2xhc3MpICMgTWF0cml6IGRlIENvbmZ1c2nDs24gZGUgUmVzdWx0YWRvcyBkZSBsYSBwcnVlYmEKbWNycDUKCgoKCmBgYAoKIyA2LiBNb2RlbG8gY29uIGVsIG3DqXRvZG8gcmYKYGBge3IgbWVzc2FnZT1UUlVFLCB3YXJuaW5nPVRSVUV9Cm1vZGVsbzYgPC0gdHJhaW4oQ2xhc3MgfiAuLCBkYXRhID0gZW50cmVuYW1pZW50bywgCiAgICAgICAgICAgICAgICBtZXRob2QgPSAicmYiLCAKICAgICAgICAgICAgICAgIHByZVByb2Nlc3MgPSBjKCJzY2FsZSIsICJjZW50ZXIiKSwKICAgICAgICAgICAgICAgIHRyQ29udHJvbCA9IHRyYWluQ29udHJvbChtZXRob2Q9ImN2IiwgbnVtYmVyID0gMTApLAogICAgICAgICAgICAgICAgdHVuZUdyaWQgPSBleHBhbmQuZ3JpZChtdHJ5ID0gYygyLDQsNikpIyBDYW1iaWFyCikKCnJlc3VsdGFkb19lbnRyZW5hbWllbnRvNiA8LSBwcmVkaWN0KG1vZGVsbzYsIGVudHJlbmFtaWVudG8pCnJlc3VsdGFkb19wcnVlYmE2IDwtIHByZWRpY3QobW9kZWxvNiwgcHJ1ZWJhKQoKIyBNYXRyaXogZGUgQ29uZnVzacOzbgptY3JlNiA8LSBjb25mdXNpb25NYXRyaXgocmVzdWx0YWRvX2VudHJlbmFtaWVudG82LCBlbnRyZW5hbWllbnRvJENsYXNzKSAjIE1hdHJpeiBkZSBDb25mdXNpw7NuIGRlIFJlc3VsdGFkb3MgZGVsIEVudHJlbmFtaWVudG8gCm1jcmU2Cm1jcnA2IDwtICBjb25mdXNpb25NYXRyaXgocmVzdWx0YWRvX3BydWViYTYsIHBydWViYSRDbGFzcykgIyBNYXRyaXogZGUgQ29uZnVzacOzbiBkZSBSZXN1bHRhZG9zIGRlIGxhIHBydWViYQptY3JwNgoKCgoKYGBgCgoKIyBSZXN1bWVuIGRlIFJlc3VsdGFkb3MKYGBge3J9CnJlc3VsdGFkb3MgPC0gZGF0YS5mcmFtZSgKICAic3ZtTGluZWFyIiA9IGMobWNyZTEkb3ZlcmFsbFsiQWNjdXJhY3kiXSwgbWNycDEkb3ZlcmFsbFsiQWNjdXJhY3kiXSksCiAgInN2bVJhZGlhbCIgPSBjKG1jcmUyJG92ZXJhbGxbIkFjY3VyYWN5Il0sIG1jcnAyJG92ZXJhbGxbIkFjY3VyYWN5Il0pLAogICAgInN2bVBvbHkiID0gYyhtY3JlMyRvdmVyYWxsWyJBY2N1cmFjeSJdLCBtY3JwMyRvdmVyYWxsWyJBY2N1cmFjeSJdKSwKICAgICAgInJwYXJ0IiA9IGMobWNyZTQkb3ZlcmFsbFsiQWNjdXJhY3kiXSwgbWNycDQkb3ZlcmFsbFsiQWNjdXJhY3kiXSksCiAgICAgICAgIm5uZXQiID0gYyhtY3JlNSRvdmVyYWxsWyJBY2N1cmFjeSJdLCBtY3JwNSRvdmVyYWxsWyJBY2N1cmFjeSJdKSwKICAgICAgICAgICJyZiIgPSBjKG1jcmU2JG92ZXJhbGxbIkFjY3VyYWN5Il0sIG1jcnA2JG92ZXJhbGxbIkFjY3VyYWN5Il0pCgopCgpyZXN1bHRhZG9zCmBgYAoKCgoKCgoKCgoKCg==