Arbol de Decisión Cancer de Mama

#install.packages("rpart")
#install.packages("rpart.plot")
library(rpart)
library(rpart.plot)

datos <- read.csv("/Users/pablosancho/Desktop/Concentración/Modulo 2 Concentracion (R)/cancer_de_mama.csv")

arbol <- rpart(diagnosis ~ ., data = datos, method = "class")

rpart.plot(arbol, type=4, extra=104, fallen.leaves=TRUE)

predicciones <- predict(arbol, datos, type = "class")

# Matriz de confusión
tabla_confusion <- table(Predicho = predicciones, Real = datos$diagnosis)
tabla_confusion
##         Real
## Predicho   B   M
##        B 343   9
##        M  14 203
# Accuracy
accuracy <- sum(diag(tabla_confusion)) / sum(tabla_confusion)
accuracy
## [1] 0.9595782

Red Neuronal Cancer de Mama

#install.packages("ggplot2") # Gráficas
library(ggplot2)
#install.packages("lattice") # Crear gráficos
library(lattice)
#install.packages ("caret") # Algoritmos de aprendizaje automático
library (caret)
#install.packages ("datasets") # Usar bases de datos, en este caso Iris
library(datasets)
#install.packages ("DataExplorer") # Análisis Exploratorio
library (DataExplorer)
#install.packages("kernlab")
library(kernlab)
## 
## Attaching package: 'kernlab'
## The following object is masked from 'package:ggplot2':
## 
##     alpha
df <- read.csv("/Users/pablosancho/Desktop/Concentración/Modulo 2 Concentracion (R)/cancer_de_mama.csv")
head(df)
##   diagnosis radius_mean texture_mean perimeter_mean area_mean smoothness_mean
## 1         M       17.99        10.38         122.80    1001.0         0.11840
## 2         M       20.57        17.77         132.90    1326.0         0.08474
## 3         M       19.69        21.25         130.00    1203.0         0.10960
## 4         M       11.42        20.38          77.58     386.1         0.14250
## 5         M       20.29        14.34         135.10    1297.0         0.10030
## 6         M       12.45        15.70          82.57     477.1         0.12780
##   compactness_mean concavity_mean concave_points_mean symmetry_mean
## 1          0.27760         0.3001             0.14710        0.2419
## 2          0.07864         0.0869             0.07017        0.1812
## 3          0.15990         0.1974             0.12790        0.2069
## 4          0.28390         0.2414             0.10520        0.2597
## 5          0.13280         0.1980             0.10430        0.1809
## 6          0.17000         0.1578             0.08089        0.2087
##   fractal_dimension_mean radius_se texture_se perimeter_se area_se
## 1                0.07871    1.0950     0.9053        8.589  153.40
## 2                0.05667    0.5435     0.7339        3.398   74.08
## 3                0.05999    0.7456     0.7869        4.585   94.03
## 4                0.09744    0.4956     1.1560        3.445   27.23
## 5                0.05883    0.7572     0.7813        5.438   94.44
## 6                0.07613    0.3345     0.8902        2.217   27.19
##   smoothness_se compactness_se concavity_se concave_points_se symmetry_se
## 1      0.006399        0.04904      0.05373           0.01587     0.03003
## 2      0.005225        0.01308      0.01860           0.01340     0.01389
## 3      0.006150        0.04006      0.03832           0.02058     0.02250
## 4      0.009110        0.07458      0.05661           0.01867     0.05963
## 5      0.011490        0.02461      0.05688           0.01885     0.01756
## 6      0.007510        0.03345      0.03672           0.01137     0.02165
##   fractal_dimension_se radius_worst texture_worst perimeter_worst area_worst
## 1             0.006193        25.38         17.33          184.60     2019.0
## 2             0.003532        24.99         23.41          158.80     1956.0
## 3             0.004571        23.57         25.53          152.50     1709.0
## 4             0.009208        14.91         26.50           98.87      567.7
## 5             0.005115        22.54         16.67          152.20     1575.0
## 6             0.005082        15.47         23.75          103.40      741.6
##   smoothness_worst compactness_worst concavity_worst concave_points_worst
## 1           0.1622            0.6656          0.7119               0.2654
## 2           0.1238            0.1866          0.2416               0.1860
## 3           0.1444            0.4245          0.4504               0.2430
## 4           0.2098            0.8663          0.6869               0.2575
## 5           0.1374            0.2050          0.4000               0.1625
## 6           0.1791            0.5249          0.5355               0.1741
##   symmetry_worst fractal_dimension_worst
## 1         0.4601                 0.11890
## 2         0.2750                 0.08902
## 3         0.3613                 0.08758
## 4         0.6638                 0.17300
## 5         0.2364                 0.07678
## 6         0.3985                 0.12440
df$diagnosis <- as.factor(df$diagnosis)
head(df)
##   diagnosis radius_mean texture_mean perimeter_mean area_mean smoothness_mean
## 1         M       17.99        10.38         122.80    1001.0         0.11840
## 2         M       20.57        17.77         132.90    1326.0         0.08474
## 3         M       19.69        21.25         130.00    1203.0         0.10960
## 4         M       11.42        20.38          77.58     386.1         0.14250
## 5         M       20.29        14.34         135.10    1297.0         0.10030
## 6         M       12.45        15.70          82.57     477.1         0.12780
##   compactness_mean concavity_mean concave_points_mean symmetry_mean
## 1          0.27760         0.3001             0.14710        0.2419
## 2          0.07864         0.0869             0.07017        0.1812
## 3          0.15990         0.1974             0.12790        0.2069
## 4          0.28390         0.2414             0.10520        0.2597
## 5          0.13280         0.1980             0.10430        0.1809
## 6          0.17000         0.1578             0.08089        0.2087
##   fractal_dimension_mean radius_se texture_se perimeter_se area_se
## 1                0.07871    1.0950     0.9053        8.589  153.40
## 2                0.05667    0.5435     0.7339        3.398   74.08
## 3                0.05999    0.7456     0.7869        4.585   94.03
## 4                0.09744    0.4956     1.1560        3.445   27.23
## 5                0.05883    0.7572     0.7813        5.438   94.44
## 6                0.07613    0.3345     0.8902        2.217   27.19
##   smoothness_se compactness_se concavity_se concave_points_se symmetry_se
## 1      0.006399        0.04904      0.05373           0.01587     0.03003
## 2      0.005225        0.01308      0.01860           0.01340     0.01389
## 3      0.006150        0.04006      0.03832           0.02058     0.02250
## 4      0.009110        0.07458      0.05661           0.01867     0.05963
## 5      0.011490        0.02461      0.05688           0.01885     0.01756
## 6      0.007510        0.03345      0.03672           0.01137     0.02165
##   fractal_dimension_se radius_worst texture_worst perimeter_worst area_worst
## 1             0.006193        25.38         17.33          184.60     2019.0
## 2             0.003532        24.99         23.41          158.80     1956.0
## 3             0.004571        23.57         25.53          152.50     1709.0
## 4             0.009208        14.91         26.50           98.87      567.7
## 5             0.005115        22.54         16.67          152.20     1575.0
## 6             0.005082        15.47         23.75          103.40      741.6
##   smoothness_worst compactness_worst concavity_worst concave_points_worst
## 1           0.1622            0.6656          0.7119               0.2654
## 2           0.1238            0.1866          0.2416               0.1860
## 3           0.1444            0.4245          0.4504               0.2430
## 4           0.2098            0.8663          0.6869               0.2575
## 5           0.1374            0.2050          0.4000               0.1625
## 6           0.1791            0.5249          0.5355               0.1741
##   symmetry_worst fractal_dimension_worst
## 1         0.4601                 0.11890
## 2         0.2750                 0.08902
## 3         0.3613                 0.08758
## 4         0.6638                 0.17300
## 5         0.2364                 0.07678
## 6         0.3985                 0.12440
set.seed(123)
renglones_entrenamiento <- createDataPartition(df$diagnosis, p=0.8, list = FALSE)
entrenamiento <- df[renglones_entrenamiento, ]
prueba <- df[-renglones_entrenamiento, ]


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

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


mcre4 <- confusionMatrix(resultado_entrenamiento4, entrenamiento$diagnosis)
mcre4
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   B   M
##          B 270   9
##          M  16 161
##                                           
##                Accuracy : 0.9452          
##                  95% CI : (0.9201, 0.9642)
##     No Information Rate : 0.6272          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.8837          
##                                           
##  Mcnemar's Test P-Value : 0.2301          
##                                           
##             Sensitivity : 0.9441          
##             Specificity : 0.9471          
##          Pos Pred Value : 0.9677          
##          Neg Pred Value : 0.9096          
##              Prevalence : 0.6272          
##          Detection Rate : 0.5921          
##    Detection Prevalence : 0.6118          
##       Balanced Accuracy : 0.9456          
##                                           
##        'Positive' Class : B               
## 
mcrp4 <- confusionMatrix(resultado_prueba4, prueba$diagnosis)
mcrp4
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction  B  M
##          B 62  4
##          M  9 38
##                                           
##                Accuracy : 0.885           
##                  95% CI : (0.8113, 0.9373)
##     No Information Rate : 0.6283          
##     P-Value [Acc > NIR] : 8.286e-10       
##                                           
##                   Kappa : 0.7595          
##                                           
##  Mcnemar's Test P-Value : 0.2673          
##                                           
##             Sensitivity : 0.8732          
##             Specificity : 0.9048          
##          Pos Pred Value : 0.9394          
##          Neg Pred Value : 0.8085          
##              Prevalence : 0.6283          
##          Detection Rate : 0.5487          
##    Detection Prevalence : 0.5841          
##       Balanced Accuracy : 0.8890          
##                                           
##        'Positive' Class : B               
## 
modelo5 <- train(diagnosis ~ ., data=entrenamiento,
                 method = "nnet", #Cambiar
                 preProcess = c("scale", "center"),
                 trControl = trainControl(method="cv", number=10)
                 #Cambiar
                 )
## # weights:  33
## initial  value 275.998898 
## iter  10 value 30.521126
## iter  20 value 16.892187
## iter  30 value 7.487588
## iter  40 value 6.637537
## iter  50 value 6.564171
## iter  60 value 6.556942
## iter  70 value 6.555469
## iter  80 value 6.555228
## iter  90 value 6.555004
## iter 100 value 6.554973
## final  value 6.554973 
## stopped after 100 iterations
## # weights:  97
## initial  value 350.645783 
## iter  10 value 17.463538
## iter  20 value 3.623620
## iter  30 value 0.293011
## iter  40 value 0.071928
## iter  50 value 0.002108
## iter  60 value 0.000520
## final  value 0.000069 
## converged
## # weights:  161
## initial  value 253.010368 
## iter  10 value 13.528826
## iter  20 value 3.494878
## iter  30 value 0.033021
## iter  40 value 0.000612
## final  value 0.000068 
## converged
## # weights:  33
## initial  value 282.421480 
## iter  10 value 71.578133
## iter  20 value 38.905638
## iter  30 value 28.542083
## iter  40 value 27.255899
## iter  50 value 27.253389
## iter  50 value 27.253389
## iter  50 value 27.253389
## final  value 27.253389 
## converged
## # weights:  97
## initial  value 267.598163 
## iter  10 value 28.654290
## iter  20 value 23.912149
## iter  30 value 22.247739
## iter  40 value 21.088159
## iter  50 value 20.241773
## iter  60 value 20.171894
## final  value 20.168471 
## converged
## # weights:  161
## initial  value 396.125347 
## iter  10 value 78.050372
## iter  20 value 32.336759
## iter  30 value 20.144663
## iter  40 value 18.610968
## iter  50 value 18.117495
## iter  60 value 17.995837
## iter  70 value 17.902925
## iter  80 value 17.856227
## iter  90 value 17.849165
## iter 100 value 17.848931
## final  value 17.848931 
## stopped after 100 iterations
## # weights:  33
## initial  value 265.214791 
## iter  10 value 75.036465
## iter  20 value 70.385667
## iter  30 value 59.572163
## iter  40 value 59.526901
## iter  50 value 39.984427
## iter  60 value 39.618039
## iter  70 value 35.865132
## iter  80 value 31.568559
## iter  90 value 31.518076
## iter 100 value 26.857920
## final  value 26.857920 
## stopped after 100 iterations
## # weights:  97
## initial  value 292.151253 
## iter  10 value 21.995170
## iter  20 value 6.273787
## iter  30 value 0.291543
## iter  40 value 0.174070
## iter  50 value 0.165038
## iter  60 value 0.155689
## iter  70 value 0.149400
## iter  80 value 0.145892
## iter  90 value 0.142093
## iter 100 value 0.140820
## final  value 0.140820 
## stopped after 100 iterations
## # weights:  161
## initial  value 299.290636 
## iter  10 value 19.673884
## iter  20 value 3.974816
## iter  30 value 0.300306
## iter  40 value 0.245302
## iter  50 value 0.207972
## iter  60 value 0.177294
## iter  70 value 0.157909
## iter  80 value 0.146513
## iter  90 value 0.137165
## iter 100 value 0.129139
## final  value 0.129139 
## stopped after 100 iterations
## # weights:  33
## initial  value 273.424203 
## iter  10 value 71.913015
## iter  20 value 19.931429
## iter  30 value 9.562689
## iter  40 value 2.475597
## iter  50 value 0.003668
## final  value 0.000042 
## converged
## # weights:  97
## initial  value 276.767987 
## iter  10 value 29.196954
## iter  20 value 10.000372
## iter  30 value 0.396747
## iter  40 value 0.038944
## iter  50 value 0.012340
## iter  60 value 0.002336
## iter  70 value 0.000576
## iter  80 value 0.000441
## final  value 0.000100 
## converged
## # weights:  161
## initial  value 324.126721 
## iter  10 value 24.947745
## iter  20 value 9.057573
## iter  30 value 6.199734
## iter  40 value 5.551519
## iter  50 value 3.683210
## iter  60 value 1.405142
## iter  70 value 0.110780
## iter  80 value 0.036725
## iter  90 value 0.009446
## iter 100 value 0.003279
## final  value 0.003279 
## stopped after 100 iterations
## # weights:  33
## initial  value 318.358768 
## iter  10 value 55.169016
## iter  20 value 32.511700
## iter  30 value 29.579076
## iter  40 value 29.501747
## final  value 29.501670 
## converged
## # weights:  97
## initial  value 280.559061 
## iter  10 value 32.477772
## iter  20 value 27.598927
## iter  30 value 26.294211
## iter  40 value 25.013635
## iter  50 value 24.595297
## iter  60 value 24.588117
## final  value 24.587994 
## converged
## # weights:  161
## initial  value 300.907822 
## iter  10 value 32.085987
## iter  20 value 21.578340
## iter  30 value 20.675820
## iter  40 value 20.113104
## iter  50 value 19.712787
## iter  60 value 19.477257
## iter  70 value 19.461146
## iter  80 value 19.460753
## final  value 19.460743 
## converged
## # weights:  33
## initial  value 268.288269 
## iter  10 value 57.938360
## iter  20 value 31.562140
## iter  30 value 23.570972
## iter  40 value 20.829309
## iter  50 value 20.817344
## iter  60 value 20.810468
## iter  70 value 20.793529
## iter  80 value 20.789452
## iter  90 value 20.783699
## iter 100 value 20.742890
## final  value 20.742890 
## stopped after 100 iterations
## # weights:  97
## initial  value 231.889568 
## iter  10 value 30.428563
## iter  20 value 14.231688
## iter  30 value 6.852545
## iter  40 value 6.521815
## iter  50 value 6.289237
## iter  60 value 5.801749
## iter  70 value 3.555705
## iter  80 value 2.914264
## iter  90 value 2.862965
## iter 100 value 2.612020
## final  value 2.612020 
## stopped after 100 iterations
## # weights:  161
## initial  value 328.507146 
## iter  10 value 27.207700
## iter  20 value 3.670020
## iter  30 value 0.193572
## iter  40 value 0.157942
## iter  50 value 0.147963
## iter  60 value 0.137429
## iter  70 value 0.129155
## iter  80 value 0.123858
## iter  90 value 0.118795
## iter 100 value 0.116373
## final  value 0.116373 
## stopped after 100 iterations
## # weights:  33
## initial  value 339.071080 
## iter  10 value 27.122536
## iter  20 value 14.005994
## iter  30 value 12.052883
## iter  40 value 11.750208
## iter  50 value 11.726918
## iter  60 value 11.720505
## iter  70 value 11.720234
## iter  80 value 11.719849
## final  value 11.719808 
## converged
## # weights:  97
## initial  value 292.776086 
## iter  10 value 39.139277
## iter  20 value 17.619340
## iter  30 value 8.523359
## iter  40 value 3.550683
## iter  50 value 2.827871
## iter  60 value 2.781002
## iter  70 value 2.775593
## iter  80 value 2.773923
## iter  90 value 2.773125
## iter 100 value 2.772874
## final  value 2.772874 
## stopped after 100 iterations
## # weights:  161
## initial  value 337.662652 
## iter  10 value 35.513359
## iter  20 value 11.335189
## iter  30 value 3.493333
## iter  40 value 1.516191
## iter  50 value 0.773291
## iter  60 value 0.054379
## iter  70 value 0.019447
## iter  80 value 0.012219
## iter  90 value 0.008004
## iter 100 value 0.005025
## final  value 0.005025 
## stopped after 100 iterations
## # weights:  33
## initial  value 315.979714 
## iter  10 value 73.939356
## iter  20 value 43.040693
## iter  30 value 34.227521
## iter  40 value 30.573617
## iter  50 value 30.370540
## final  value 30.370206 
## converged
## # weights:  97
## initial  value 274.646392 
## iter  10 value 34.428514
## iter  20 value 27.211483
## iter  30 value 24.956093
## iter  40 value 23.259159
## iter  50 value 21.798003
## iter  60 value 21.209930
## iter  70 value 20.828151
## iter  80 value 20.711196
## iter  90 value 20.704998
## final  value 20.704913 
## converged
## # weights:  161
## initial  value 340.782584 
## iter  10 value 26.686498
## iter  20 value 20.617506
## iter  30 value 19.685721
## iter  40 value 19.507345
## iter  50 value 19.442964
## iter  60 value 19.397076
## iter  70 value 19.389178
## iter  80 value 19.388686
## final  value 19.388661 
## converged
## # weights:  33
## initial  value 254.766757 
## iter  10 value 33.102178
## iter  20 value 12.538301
## iter  30 value 11.947829
## iter  40 value 11.921068
## iter  50 value 11.913502
## iter  60 value 11.909733
## iter  70 value 11.907765
## iter  80 value 11.906945
## iter  90 value 11.905427
## iter 100 value 11.904227
## final  value 11.904227 
## stopped after 100 iterations
## # weights:  97
## initial  value 233.657278 
## iter  10 value 23.099420
## iter  20 value 12.348781
## iter  30 value 10.602911
## iter  40 value 9.610137
## iter  50 value 7.249130
## iter  60 value 6.499422
## iter  70 value 5.634275
## iter  80 value 5.576452
## iter  90 value 5.542166
## iter 100 value 5.466903
## final  value 5.466903 
## stopped after 100 iterations
## # weights:  161
## initial  value 344.514075 
## iter  10 value 15.950737
## iter  20 value 5.352738
## iter  30 value 0.455525
## iter  40 value 0.386224
## iter  50 value 0.288002
## iter  60 value 0.262541
## iter  70 value 0.248084
## iter  80 value 0.223502
## iter  90 value 0.194867
## iter 100 value 0.164612
## final  value 0.164612 
## stopped after 100 iterations
## # weights:  33
## initial  value 299.713185 
## iter  10 value 26.955999
## iter  20 value 7.305041
## iter  30 value 6.645907
## iter  40 value 6.562104
## iter  50 value 6.555079
## iter  60 value 6.554895
## iter  60 value 6.554895
## iter  60 value 6.554895
## final  value 6.554895 
## converged
## # weights:  97
## initial  value 276.442511 
## iter  10 value 24.550543
## iter  20 value 8.547076
## iter  30 value 3.762047
## iter  40 value 1.659066
## iter  50 value 0.309429
## iter  60 value 0.128948
## iter  70 value 0.028906
## iter  80 value 0.007296
## iter  90 value 0.001929
## iter 100 value 0.000884
## final  value 0.000884 
## stopped after 100 iterations
## # weights:  161
## initial  value 272.875552 
## iter  10 value 15.599733
## iter  20 value 1.279912
## iter  30 value 0.055386
## iter  40 value 0.006596
## final  value 0.000090 
## converged
## # weights:  33
## initial  value 345.395404 
## iter  10 value 54.233262
## iter  20 value 27.568786
## iter  30 value 25.686661
## iter  40 value 25.670102
## final  value 25.670101 
## converged
## # weights:  97
## initial  value 330.002861 
## iter  10 value 83.414542
## iter  20 value 30.409348
## iter  30 value 19.426493
## iter  40 value 18.815383
## iter  50 value 18.676712
## iter  60 value 18.664858
## iter  70 value 18.657390
## iter  80 value 18.656134
## final  value 18.656115 
## converged
## # weights:  161
## initial  value 317.259966 
## iter  10 value 29.968613
## iter  20 value 22.779502
## iter  30 value 22.064079
## iter  40 value 19.559240
## iter  50 value 18.510413
## iter  60 value 18.241281
## iter  70 value 18.200612
## iter  80 value 18.160864
## iter  90 value 18.154712
## iter 100 value 18.154596
## final  value 18.154596 
## stopped after 100 iterations
## # weights:  33
## initial  value 275.382395 
## iter  10 value 70.385496
## iter  20 value 16.561635
## iter  30 value 11.943838
## iter  40 value 11.859954
## iter  50 value 11.852018
## iter  60 value 11.848284
## iter  70 value 11.846383
## iter  80 value 11.845597
## iter  90 value 11.845141
## iter 100 value 11.844669
## final  value 11.844669 
## stopped after 100 iterations
## # weights:  97
## initial  value 266.234908 
## iter  10 value 49.449370
## iter  20 value 13.886371
## iter  30 value 7.269239
## iter  40 value 2.525726
## iter  50 value 0.554942
## iter  60 value 0.211890
## iter  70 value 0.203349
## iter  80 value 0.185038
## iter  90 value 0.173722
## iter 100 value 0.164500
## final  value 0.164500 
## stopped after 100 iterations
## # weights:  161
## initial  value 324.519289 
## iter  10 value 14.011223
## iter  20 value 0.800256
## iter  30 value 0.220010
## iter  40 value 0.199692
## iter  50 value 0.177107
## iter  60 value 0.166079
## iter  70 value 0.155302
## iter  80 value 0.145797
## iter  90 value 0.140874
## iter 100 value 0.134864
## final  value 0.134864 
## stopped after 100 iterations
## # weights:  33
## initial  value 279.531097 
## iter  10 value 32.598777
## iter  20 value 24.751501
## iter  30 value 24.748250
## iter  40 value 24.747616
## iter  50 value 24.747015
## iter  60 value 24.746824
## iter  70 value 24.746686
## iter  80 value 24.745058
## iter  90 value 24.741764
## iter 100 value 21.339555
## final  value 21.339555 
## stopped after 100 iterations
## # weights:  97
## initial  value 305.848181 
## iter  10 value 30.092908
## iter  20 value 11.656501
## iter  30 value 8.652024
## iter  40 value 7.485757
## iter  50 value 6.814372
## iter  60 value 6.613440
## iter  70 value 6.562661
## iter  80 value 6.537230
## iter  90 value 6.525032
## iter 100 value 6.518359
## final  value 6.518359 
## stopped after 100 iterations
## # weights:  161
## initial  value 261.736670 
## iter  10 value 18.893221
## iter  20 value 5.578271
## iter  30 value 1.370243
## iter  40 value 0.125045
## iter  50 value 0.024484
## iter  60 value 0.007507
## iter  70 value 0.001699
## iter  80 value 0.000494
## iter  90 value 0.000307
## iter 100 value 0.000220
## final  value 0.000220 
## stopped after 100 iterations
## # weights:  33
## initial  value 352.808520 
## iter  10 value 50.216889
## iter  20 value 34.654734
## iter  30 value 31.385112
## iter  40 value 30.792453
## iter  50 value 30.767568
## final  value 30.767524 
## converged
## # weights:  97
## initial  value 311.806361 
## iter  10 value 85.681177
## iter  20 value 38.990995
## iter  30 value 25.404647
## iter  40 value 23.382125
## iter  50 value 22.556339
## iter  60 value 22.460685
## iter  70 value 22.439611
## iter  80 value 22.437716
## final  value 22.437707 
## converged
## # weights:  161
## initial  value 311.991515 
## iter  10 value 30.484131
## iter  20 value 23.389867
## iter  30 value 22.232274
## iter  40 value 21.958182
## iter  50 value 21.747833
## iter  60 value 21.123427
## iter  70 value 20.440795
## iter  80 value 20.192537
## iter  90 value 20.086437
## iter 100 value 20.066358
## final  value 20.066358 
## stopped after 100 iterations
## # weights:  33
## initial  value 401.768982 
## iter  10 value 86.850594
## iter  20 value 31.966843
## iter  30 value 16.892349
## iter  40 value 16.567413
## iter  50 value 16.538869
## iter  60 value 16.530598
## iter  70 value 16.518473
## iter  80 value 16.508747
## iter  90 value 16.182862
## iter 100 value 12.197733
## final  value 12.197733 
## stopped after 100 iterations
## # weights:  97
## initial  value 295.389925 
## iter  10 value 21.253836
## iter  20 value 12.141020
## iter  30 value 9.532368
## iter  40 value 6.651335
## iter  50 value 5.098491
## iter  60 value 4.399682
## iter  70 value 2.172323
## iter  80 value 0.327710
## iter  90 value 0.291832
## iter 100 value 0.265921
## final  value 0.265921 
## stopped after 100 iterations
## # weights:  161
## initial  value 274.877265 
## iter  10 value 17.352541
## iter  20 value 3.932245
## iter  30 value 0.363593
## iter  40 value 0.272774
## iter  50 value 0.240694
## iter  60 value 0.217790
## iter  70 value 0.205552
## iter  80 value 0.189608
## iter  90 value 0.176682
## iter 100 value 0.170082
## final  value 0.170082 
## stopped after 100 iterations
## # weights:  33
## initial  value 306.284143 
## iter  10 value 40.429850
## iter  20 value 27.800141
## iter  30 value 21.270745
## iter  40 value 17.154596
## iter  50 value 16.416103
## iter  60 value 16.383391
## iter  70 value 16.375879
## iter  80 value 11.728900
## iter  90 value 11.725026
## iter 100 value 11.723759
## final  value 11.723759 
## stopped after 100 iterations
## # weights:  97
## initial  value 333.091236 
## iter  10 value 29.696859
## iter  20 value 11.861005
## iter  30 value 2.308943
## iter  40 value 0.023228
## iter  50 value 0.000168
## final  value 0.000043 
## converged
## # weights:  161
## initial  value 239.616021 
## iter  10 value 18.363280
## iter  20 value 2.023144
## iter  30 value 0.023553
## iter  40 value 0.000482
## final  value 0.000096 
## converged
## # weights:  33
## initial  value 267.069403 
## iter  10 value 35.968473
## iter  20 value 31.422739
## iter  30 value 30.552536
## final  value 30.551897 
## converged
## # weights:  97
## initial  value 275.770592 
## iter  10 value 56.285102
## iter  20 value 29.474405
## iter  30 value 22.325068
## iter  40 value 21.272026
## iter  50 value 21.240166
## iter  60 value 21.234137
## iter  70 value 21.233853
## final  value 21.233852 
## converged
## # weights:  161
## initial  value 293.883920 
## iter  10 value 38.474812
## iter  20 value 25.678462
## iter  30 value 23.377080
## iter  40 value 21.621527
## iter  50 value 20.878186
## iter  60 value 20.510278
## iter  70 value 20.292782
## iter  80 value 19.968108
## iter  90 value 19.951615
## iter 100 value 19.951385
## final  value 19.951385 
## stopped after 100 iterations
## # weights:  33
## initial  value 270.406880 
## iter  10 value 49.673028
## iter  20 value 27.166472
## iter  30 value 13.891085
## iter  40 value 11.981655
## iter  50 value 11.956489
## iter  60 value 11.949206
## iter  70 value 11.942937
## iter  80 value 11.933469
## iter  90 value 11.928619
## iter 100 value 11.919527
## final  value 11.919527 
## stopped after 100 iterations
## # weights:  97
## initial  value 274.941998 
## iter  10 value 25.422855
## iter  20 value 9.555207
## iter  30 value 7.046244
## iter  40 value 6.937305
## iter  50 value 6.913073
## iter  60 value 6.886534
## iter  70 value 6.858187
## iter  80 value 6.832657
## iter  90 value 6.798121
## iter 100 value 6.756018
## final  value 6.756018 
## stopped after 100 iterations
## # weights:  161
## initial  value 234.401883 
## iter  10 value 16.563723
## iter  20 value 6.312462
## iter  30 value 2.127394
## iter  40 value 1.652306
## iter  50 value 1.623655
## iter  60 value 1.017077
## iter  70 value 0.275940
## iter  80 value 0.240571
## iter  90 value 0.228396
## iter 100 value 0.217557
## final  value 0.217557 
## stopped after 100 iterations
## # weights:  33
## initial  value 255.564161 
## iter  10 value 49.870240
## iter  20 value 31.207801
## iter  30 value 30.404616
## iter  40 value 30.303067
## iter  50 value 30.274337
## iter  60 value 30.268574
## iter  70 value 30.266307
## iter  80 value 30.266066
## iter  90 value 30.265865
## final  value 30.265620 
## converged
## # weights:  97
## initial  value 320.609429 
## iter  10 value 23.573761
## iter  20 value 9.606715
## iter  30 value 4.007404
## iter  40 value 3.659845
## iter  50 value 3.456729
## iter  60 value 3.276642
## iter  70 value 3.065276
## iter  80 value 2.981708
## iter  90 value 2.874291
## iter 100 value 2.717098
## final  value 2.717098 
## stopped after 100 iterations
## # weights:  161
## initial  value 289.479148 
## iter  10 value 13.648745
## iter  20 value 1.412409
## iter  30 value 0.018902
## final  value 0.000079 
## converged
## # weights:  33
## initial  value 317.164259 
## iter  10 value 83.897696
## iter  20 value 41.115703
## iter  30 value 30.232407
## iter  40 value 28.517083
## iter  50 value 28.514651
## final  value 28.514651 
## converged
## # weights:  97
## initial  value 332.158156 
## iter  10 value 37.551382
## iter  20 value 24.066124
## iter  30 value 22.035076
## iter  40 value 21.825935
## iter  50 value 21.545050
## iter  60 value 21.432357
## final  value 21.429235 
## converged
## # weights:  161
## initial  value 259.004422 
## iter  10 value 27.220113
## iter  20 value 20.180953
## iter  30 value 18.782211
## iter  40 value 18.457754
## iter  50 value 18.355749
## iter  60 value 18.349731
## iter  70 value 18.349510
## final  value 18.349493 
## converged
## # weights:  33
## initial  value 331.903973 
## iter  10 value 31.321324
## iter  20 value 13.895070
## iter  30 value 10.692874
## iter  40 value 6.990163
## iter  50 value 6.729053
## iter  60 value 6.717970
## iter  70 value 6.714656
## iter  80 value 6.713498
## iter  90 value 6.712739
## iter 100 value 6.712337
## final  value 6.712337 
## stopped after 100 iterations
## # weights:  97
## initial  value 356.333796 
## iter  10 value 19.155088
## iter  20 value 6.279157
## iter  30 value 3.283195
## iter  40 value 2.633581
## iter  50 value 0.326406
## iter  60 value 0.252718
## iter  70 value 0.239300
## iter  80 value 0.216052
## iter  90 value 0.195161
## iter 100 value 0.182463
## final  value 0.182463 
## stopped after 100 iterations
## # weights:  161
## initial  value 289.313949 
## iter  10 value 12.646971
## iter  20 value 1.711733
## iter  30 value 0.215401
## iter  40 value 0.181912
## iter  50 value 0.165675
## iter  60 value 0.149676
## iter  70 value 0.139276
## iter  80 value 0.129727
## iter  90 value 0.123228
## iter 100 value 0.118980
## final  value 0.118980 
## stopped after 100 iterations
## # weights:  33
## initial  value 313.961005 
## iter  10 value 54.180007
## iter  20 value 25.372704
## iter  30 value 24.766056
## iter  40 value 24.749067
## iter  50 value 24.747185
## iter  60 value 24.746561
## final  value 24.746561 
## converged
## # weights:  97
## initial  value 222.322936 
## iter  10 value 27.783384
## iter  20 value 16.692179
## iter  30 value 12.905102
## iter  40 value 9.780729
## iter  50 value 7.886774
## iter  60 value 4.863763
## iter  70 value 3.262946
## iter  80 value 2.571878
## iter  90 value 0.095255
## iter 100 value 0.014798
## final  value 0.014798 
## stopped after 100 iterations
## # weights:  161
## initial  value 290.889365 
## iter  10 value 18.952602
## iter  20 value 2.821763
## iter  30 value 0.020677
## iter  40 value 0.000355
## final  value 0.000100 
## converged
## # weights:  33
## initial  value 267.820562 
## iter  10 value 69.211429
## iter  20 value 43.311671
## iter  30 value 31.600878
## iter  40 value 30.654529
## iter  50 value 30.650762
## final  value 30.650602 
## converged
## # weights:  97
## initial  value 402.016361 
## iter  10 value 63.391327
## iter  20 value 35.454523
## iter  30 value 27.186212
## iter  40 value 23.922872
## iter  50 value 22.700202
## iter  60 value 21.942905
## iter  70 value 21.462998
## iter  80 value 21.419118
## iter  90 value 21.416137
## iter 100 value 21.415774
## final  value 21.415774 
## stopped after 100 iterations
## # weights:  161
## initial  value 240.463544 
## iter  10 value 31.007047
## iter  20 value 25.592256
## iter  30 value 22.770520
## iter  40 value 22.175053
## iter  50 value 21.779054
## iter  60 value 21.050726
## iter  70 value 20.981204
## iter  80 value 20.979705
## final  value 20.979703 
## converged
## # weights:  33
## initial  value 306.087770 
## iter  10 value 58.912876
## iter  20 value 15.363908
## iter  30 value 8.169868
## iter  40 value 7.106385
## iter  50 value 6.876426
## iter  60 value 6.829901
## iter  70 value 6.810497
## iter  80 value 6.792297
## iter  90 value 6.779629
## iter 100 value 6.774270
## final  value 6.774270 
## stopped after 100 iterations
## # weights:  97
## initial  value 324.391897 
## iter  10 value 30.581290
## iter  20 value 11.190305
## iter  30 value 4.239997
## iter  40 value 3.133842
## iter  50 value 2.977079
## iter  60 value 2.294452
## iter  70 value 0.372887
## iter  80 value 0.283823
## iter  90 value 0.262369
## iter 100 value 0.245584
## final  value 0.245584 
## stopped after 100 iterations
## # weights:  161
## initial  value 290.629442 
## iter  10 value 18.689106
## iter  20 value 4.740596
## iter  30 value 0.337905
## iter  40 value 0.271989
## iter  50 value 0.249219
## iter  60 value 0.230903
## iter  70 value 0.215947
## iter  80 value 0.202488
## iter  90 value 0.191071
## iter 100 value 0.185257
## final  value 0.185257 
## stopped after 100 iterations
## # weights:  33
## initial  value 345.290687 
## iter  10 value 64.733095
## iter  20 value 36.604133
## iter  30 value 23.539459
## iter  40 value 22.658058
## iter  50 value 22.449445
## iter  60 value 18.471481
## iter  70 value 17.774625
## iter  80 value 17.753911
## iter  90 value 17.747127
## iter 100 value 17.746386
## final  value 17.746386 
## stopped after 100 iterations
## # weights:  97
## initial  value 302.879906 
## iter  10 value 38.244466
## iter  20 value 15.923646
## iter  30 value 6.115832
## iter  40 value 0.743755
## iter  50 value 0.043831
## iter  60 value 0.011471
## iter  70 value 0.003884
## iter  80 value 0.001904
## iter  90 value 0.000505
## final  value 0.000083 
## converged
## # weights:  161
## initial  value 250.829604 
## iter  10 value 22.050144
## iter  20 value 8.317096
## iter  30 value 7.402939
## iter  40 value 5.110249
## iter  50 value 4.616563
## iter  60 value 4.287147
## iter  70 value 3.425561
## iter  80 value 2.918894
## iter  90 value 2.071753
## iter 100 value 1.431823
## final  value 1.431823 
## stopped after 100 iterations
## # weights:  33
## initial  value 286.735821 
## iter  10 value 58.505131
## iter  20 value 43.838997
## iter  30 value 34.163825
## iter  40 value 30.868565
## iter  50 value 30.813108
## iter  60 value 30.805874
## final  value 30.805872 
## converged
## # weights:  97
## initial  value 261.394605 
## iter  10 value 30.307410
## iter  20 value 23.861932
## iter  30 value 22.759163
## iter  40 value 22.066185
## iter  50 value 21.740540
## iter  60 value 21.693415
## iter  70 value 21.693089
## iter  70 value 21.693089
## iter  70 value 21.693089
## final  value 21.693089 
## converged
## # weights:  161
## initial  value 296.955140 
## iter  10 value 40.023630
## iter  20 value 25.085221
## iter  30 value 21.144361
## iter  40 value 20.215675
## iter  50 value 20.083063
## iter  60 value 20.039797
## iter  70 value 20.038109
## iter  80 value 20.038095
## final  value 20.038094 
## converged
## # weights:  33
## initial  value 275.046057 
## iter  10 value 34.012004
## iter  20 value 26.113471
## iter  30 value 24.901886
## iter  40 value 23.755759
## iter  50 value 20.803958
## iter  60 value 20.796865
## iter  70 value 20.794189
## iter  80 value 20.790127
## iter  90 value 20.479535
## iter 100 value 16.558375
## final  value 16.558375 
## stopped after 100 iterations
## # weights:  97
## initial  value 449.443222 
## iter  10 value 33.243409
## iter  20 value 17.721296
## iter  30 value 14.187760
## iter  40 value 7.112639
## iter  50 value 6.585819
## iter  60 value 6.297384
## iter  70 value 5.161867
## iter  80 value 1.289797
## iter  90 value 0.431952
## iter 100 value 0.345178
## final  value 0.345178 
## stopped after 100 iterations
## # weights:  161
## initial  value 347.206065 
## iter  10 value 18.417863
## iter  20 value 1.968475
## iter  30 value 0.451406
## iter  40 value 0.373896
## iter  50 value 0.338801
## iter  60 value 0.323210
## iter  70 value 0.305303
## iter  80 value 0.288216
## iter  90 value 0.277223
## iter 100 value 0.271178
## final  value 0.271178 
## stopped after 100 iterations
## # weights:  33
## initial  value 309.205709 
## iter  10 value 45.259741
## iter  20 value 27.157080
## iter  30 value 26.709956
## iter  40 value 26.693846
## iter  50 value 22.417875
## iter  60 value 22.398332
## iter  70 value 22.392330
## iter  80 value 22.391678
## iter  90 value 22.388162
## iter 100 value 22.387508
## final  value 22.387508 
## stopped after 100 iterations
## # weights:  97
## initial  value 269.753537 
## iter  10 value 30.561985
## iter  20 value 7.228053
## iter  30 value 3.080570
## iter  40 value 2.222693
## iter  50 value 1.955278
## iter  60 value 1.670518
## iter  70 value 1.416611
## iter  80 value 1.405081
## iter  90 value 1.395226
## iter 100 value 1.391614
## final  value 1.391614 
## stopped after 100 iterations
## # weights:  161
## initial  value 293.746197 
## iter  10 value 23.969241
## iter  20 value 8.399806
## iter  30 value 2.360855
## iter  40 value 0.284828
## iter  50 value 0.051548
## iter  60 value 0.031353
## iter  70 value 0.018714
## iter  80 value 0.005227
## iter  90 value 0.001890
## iter 100 value 0.000268
## final  value 0.000268 
## stopped after 100 iterations
## # weights:  33
## initial  value 348.586681 
## iter  10 value 68.992488
## iter  20 value 35.200869
## iter  30 value 30.598553
## iter  40 value 29.407747
## final  value 29.405231 
## converged
## # weights:  97
## initial  value 298.950904 
## iter  10 value 59.409879
## iter  20 value 28.135119
## iter  30 value 23.305450
## iter  40 value 22.157933
## iter  50 value 21.993239
## iter  60 value 21.990932
## final  value 21.990932 
## converged
## # weights:  161
## initial  value 335.172797 
## iter  10 value 29.675088
## iter  20 value 23.212793
## iter  30 value 21.897507
## iter  40 value 20.670359
## iter  50 value 19.884396
## iter  60 value 19.816024
## iter  70 value 19.807582
## iter  80 value 19.807436
## final  value 19.807409 
## converged
## # weights:  33
## initial  value 270.283817 
## iter  10 value 64.196983
## iter  20 value 22.952917
## iter  30 value 22.559291
## iter  40 value 18.590804
## iter  50 value 17.954065
## iter  60 value 17.895843
## iter  70 value 17.883712
## iter  80 value 17.881650
## iter  90 value 17.880617
## iter 100 value 17.878469
## final  value 17.878469 
## stopped after 100 iterations
## # weights:  97
## initial  value 328.956304 
## iter  10 value 38.420942
## iter  20 value 17.345140
## iter  30 value 4.543695
## iter  40 value 2.323675
## iter  50 value 2.129782
## iter  60 value 2.105720
## iter  70 value 1.161255
## iter  80 value 0.306648
## iter  90 value 0.232904
## iter 100 value 0.211328
## final  value 0.211328 
## stopped after 100 iterations
## # weights:  161
## initial  value 221.687481 
## iter  10 value 18.628850
## iter  20 value 3.532138
## iter  30 value 0.449831
## iter  40 value 0.345715
## iter  50 value 0.261712
## iter  60 value 0.202783
## iter  70 value 0.178047
## iter  80 value 0.162314
## iter  90 value 0.150774
## iter 100 value 0.145657
## final  value 0.145657 
## stopped after 100 iterations
## # weights:  161
## initial  value 343.597544 
## iter  10 value 122.241273
## iter  20 value 38.490157
## iter  30 value 24.719215
## iter  40 value 22.050819
## iter  50 value 21.231478
## iter  60 value 20.873136
## iter  70 value 20.775119
## iter  80 value 20.749658
## iter  90 value 20.741289
## iter 100 value 20.739536
## final  value 20.739536 
## stopped after 100 iterations
resultado_entrenamiento5 <- predict(modelo5, entrenamiento)
resultado_prueba5 <- predict(modelo5, prueba)

mcre5 <- confusionMatrix(resultado_entrenamiento5, entrenamiento$diagnosis)
mcre5
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   B   M
##          B 286   3
##          M   0 167
##                                           
##                Accuracy : 0.9934          
##                  95% CI : (0.9809, 0.9986)
##     No Information Rate : 0.6272          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.9859          
##                                           
##  Mcnemar's Test P-Value : 0.2482          
##                                           
##             Sensitivity : 1.0000          
##             Specificity : 0.9824          
##          Pos Pred Value : 0.9896          
##          Neg Pred Value : 1.0000          
##              Prevalence : 0.6272          
##          Detection Rate : 0.6272          
##    Detection Prevalence : 0.6338          
##       Balanced Accuracy : 0.9912          
##                                           
##        'Positive' Class : B               
## 
mcrp5 <- confusionMatrix(resultado_prueba5, prueba$diagnosis)
mcrp5
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction  B  M
##          B 69  1
##          M  2 41
##                                           
##                Accuracy : 0.9735          
##                  95% CI : (0.9244, 0.9945)
##     No Information Rate : 0.6283          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.9434          
##                                           
##  Mcnemar's Test P-Value : 1               
##                                           
##             Sensitivity : 0.9718          
##             Specificity : 0.9762          
##          Pos Pred Value : 0.9857          
##          Neg Pred Value : 0.9535          
##              Prevalence : 0.6283          
##          Detection Rate : 0.6106          
##    Detection Prevalence : 0.6195          
##       Balanced Accuracy : 0.9740          
##                                           
##        'Positive' Class : B               
## 
#install.packages("NeuralNetTools")
library(NeuralNetTools)

# Extraer el modelo de nnet desde caret
modelo_nnet <- modelo5$finalModel

# Mejor visualización de la red neuronal
plotnet(modelo_nnet,
        alpha = 0.6,          # transparencia de las líneas
        circle_col = "lightblue", # color de las neuronas
        var_labs = TRUE,      # mostrar nombres de variables
        cex_val = 0.5,        # tamaño de los valores en las conexiones
        cex_input = 0.6,      # tamaño de las etiquetas de entrada
        cex_hidden = 0.6,     # tamaño de las etiquetas ocultas
        cex_response = 0.8,   # tamaño de la etiqueta de salida
        circle_cex = 4,       # tamaño de los nodos (neuronas)
        pos_col = "darkgreen",# color de pesos positivos
        neg_col = "red"       # color de pesos negativos
)

LS0tCnRpdGxlOiAiQ2FuY2VyIGRlIE1hbWEiCmF1dGhvcjogIlBhYmxvIFNhbmNobyIKZGF0ZTogIjIwMjUtMDgtMjUiCm91dHB1dDogCiAgaHRtbF9kb2N1bWVudDogCiAgICB0b2M6IFRSVUUKICAgIHRvY19mbG9hdDogVFJVRQogICAgY29kZV9kb3dubG9hZDogVFJVRQogICAgdGhlbWU6IGNvc21vCi0tLQoKIVtdKGh0dHBzOi8vc3RhdGljbmV3LWNvbW1vbi1wcm9kLnRvcGRvY3RvcnMubXgvYXNzZXRzL2ltYWdlQ2xvdWQvaG9tZS1wYWdlL2RvY3Rvci1tYWluLWJhbm5lci53ZWJwP3dpZHRoPTc2OC9oZWlnaHQ9NjE2L2Zvcm1hdD1wbmcpCgojIDxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPiBBcmJvbCBkZSBEZWNpc2nDs24gQ2FuY2VyIGRlIE1hbWEgPC9zcGFuPgoKYGBge3J9CiNpbnN0YWxsLnBhY2thZ2VzKCJycGFydCIpCiNpbnN0YWxsLnBhY2thZ2VzKCJycGFydC5wbG90IikKbGlicmFyeShycGFydCkKbGlicmFyeShycGFydC5wbG90KQoKZGF0b3MgPC0gcmVhZC5jc3YoIi9Vc2Vycy9wYWJsb3NhbmNoby9EZXNrdG9wL0NvbmNlbnRyYWNpb8yBbi9Nb2R1bG8gMiBDb25jZW50cmFjaW9uIChSKS9jYW5jZXJfZGVfbWFtYS5jc3YiKQoKYXJib2wgPC0gcnBhcnQoZGlhZ25vc2lzIH4gLiwgZGF0YSA9IGRhdG9zLCBtZXRob2QgPSAiY2xhc3MiKQoKcnBhcnQucGxvdChhcmJvbCwgdHlwZT00LCBleHRyYT0xMDQsIGZhbGxlbi5sZWF2ZXM9VFJVRSkKCnByZWRpY2Npb25lcyA8LSBwcmVkaWN0KGFyYm9sLCBkYXRvcywgdHlwZSA9ICJjbGFzcyIpCgojIE1hdHJpeiBkZSBjb25mdXNpw7NuCnRhYmxhX2NvbmZ1c2lvbiA8LSB0YWJsZShQcmVkaWNobyA9IHByZWRpY2Npb25lcywgUmVhbCA9IGRhdG9zJGRpYWdub3NpcykKdGFibGFfY29uZnVzaW9uCgojIEFjY3VyYWN5CmFjY3VyYWN5IDwtIHN1bShkaWFnKHRhYmxhX2NvbmZ1c2lvbikpIC8gc3VtKHRhYmxhX2NvbmZ1c2lvbikKYWNjdXJhY3kKYGBgCgojIDxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPiBSZWQgTmV1cm9uYWwgQ2FuY2VyIGRlIE1hbWEgPC9zcGFuPgpgYGB7cn0KI2luc3RhbGwucGFja2FnZXMoImdncGxvdDIiKSAjIEdyw6FmaWNhcwpsaWJyYXJ5KGdncGxvdDIpCiNpbnN0YWxsLnBhY2thZ2VzKCJsYXR0aWNlIikgIyBDcmVhciBncsOhZmljb3MKbGlicmFyeShsYXR0aWNlKQojaW5zdGFsbC5wYWNrYWdlcyAoImNhcmV0IikgIyBBbGdvcml0bW9zIGRlIGFwcmVuZGl6YWplIGF1dG9tw6F0aWNvCmxpYnJhcnkgKGNhcmV0KQojaW5zdGFsbC5wYWNrYWdlcyAoImRhdGFzZXRzIikgIyBVc2FyIGJhc2VzIGRlIGRhdG9zLCBlbiBlc3RlIGNhc28gSXJpcwpsaWJyYXJ5KGRhdGFzZXRzKQojaW5zdGFsbC5wYWNrYWdlcyAoIkRhdGFFeHBsb3JlciIpICMgQW7DoWxpc2lzIEV4cGxvcmF0b3JpbwpsaWJyYXJ5IChEYXRhRXhwbG9yZXIpCiNpbnN0YWxsLnBhY2thZ2VzKCJrZXJubGFiIikKbGlicmFyeShrZXJubGFiKQoKCgpkZiA8LSByZWFkLmNzdigiL1VzZXJzL3BhYmxvc2FuY2hvL0Rlc2t0b3AvQ29uY2VudHJhY2lvzIFuL01vZHVsbyAyIENvbmNlbnRyYWNpb24gKFIpL2NhbmNlcl9kZV9tYW1hLmNzdiIpCmhlYWQoZGYpCgpkZiRkaWFnbm9zaXMgPC0gYXMuZmFjdG9yKGRmJGRpYWdub3NpcykKaGVhZChkZikKCnNldC5zZWVkKDEyMykKcmVuZ2xvbmVzX2VudHJlbmFtaWVudG8gPC0gY3JlYXRlRGF0YVBhcnRpdGlvbihkZiRkaWFnbm9zaXMsIHA9MC44LCBsaXN0ID0gRkFMU0UpCmVudHJlbmFtaWVudG8gPC0gZGZbcmVuZ2xvbmVzX2VudHJlbmFtaWVudG8sIF0KcHJ1ZWJhIDwtIGRmWy1yZW5nbG9uZXNfZW50cmVuYW1pZW50bywgXQoKCm1vZGVsbzQgPC0gdHJhaW4oZGlhZ25vc2lzIH4gLiwgZGF0YT1lbnRyZW5hbWllbnRvLAogICAgICAgICAgICAgICAgIG1ldGhvZCA9ICJycGFydCIsICNDYW1iaWFyCiAgICAgICAgICAgICAgICAgcHJlUHJvY2VzcyA9IGMoInNjYWxlIiwgImNlbnRlciIpLAogICAgICAgICAgICAgICAgIHRyQ29udHJvbCA9IHRyYWluQ29udHJvbChtZXRob2Q9ImN2IiwgbnVtYmVyPTEwKSwKICAgICAgICAgICAgICAgICB0dW5lTGVuZ3RoID0gMTAgI0NhbWJpYXIKICAgICAgICAgICAgICAgICApCgpyZXN1bHRhZG9fZW50cmVuYW1pZW50bzQgPC0gcHJlZGljdChtb2RlbG80LCBlbnRyZW5hbWllbnRvKQpyZXN1bHRhZG9fcHJ1ZWJhNCA8LSBwcmVkaWN0KG1vZGVsbzQsIHBydWViYSkKCgptY3JlNCA8LSBjb25mdXNpb25NYXRyaXgocmVzdWx0YWRvX2VudHJlbmFtaWVudG80LCBlbnRyZW5hbWllbnRvJGRpYWdub3NpcykKbWNyZTQKCm1jcnA0IDwtIGNvbmZ1c2lvbk1hdHJpeChyZXN1bHRhZG9fcHJ1ZWJhNCwgcHJ1ZWJhJGRpYWdub3NpcykKbWNycDQKCgptb2RlbG81IDwtIHRyYWluKGRpYWdub3NpcyB+IC4sIGRhdGE9ZW50cmVuYW1pZW50bywKICAgICAgICAgICAgICAgICBtZXRob2QgPSAibm5ldCIsICNDYW1iaWFyCiAgICAgICAgICAgICAgICAgcHJlUHJvY2VzcyA9IGMoInNjYWxlIiwgImNlbnRlciIpLAogICAgICAgICAgICAgICAgIHRyQ29udHJvbCA9IHRyYWluQ29udHJvbChtZXRob2Q9ImN2IiwgbnVtYmVyPTEwKQogICAgICAgICAgICAgICAgICNDYW1iaWFyCiAgICAgICAgICAgICAgICAgKQoKcmVzdWx0YWRvX2VudHJlbmFtaWVudG81IDwtIHByZWRpY3QobW9kZWxvNSwgZW50cmVuYW1pZW50bykKcmVzdWx0YWRvX3BydWViYTUgPC0gcHJlZGljdChtb2RlbG81LCBwcnVlYmEpCgptY3JlNSA8LSBjb25mdXNpb25NYXRyaXgocmVzdWx0YWRvX2VudHJlbmFtaWVudG81LCBlbnRyZW5hbWllbnRvJGRpYWdub3NpcykKbWNyZTUKCm1jcnA1IDwtIGNvbmZ1c2lvbk1hdHJpeChyZXN1bHRhZG9fcHJ1ZWJhNSwgcHJ1ZWJhJGRpYWdub3NpcykKbWNycDUKCgojaW5zdGFsbC5wYWNrYWdlcygiTmV1cmFsTmV0VG9vbHMiKQpsaWJyYXJ5KE5ldXJhbE5ldFRvb2xzKQoKIyBFeHRyYWVyIGVsIG1vZGVsbyBkZSBubmV0IGRlc2RlIGNhcmV0Cm1vZGVsb19ubmV0IDwtIG1vZGVsbzUkZmluYWxNb2RlbAoKIyBNZWpvciB2aXN1YWxpemFjacOzbiBkZSBsYSByZWQgbmV1cm9uYWwKcGxvdG5ldChtb2RlbG9fbm5ldCwKICAgICAgICBhbHBoYSA9IDAuNiwgICAgICAgICAgIyB0cmFuc3BhcmVuY2lhIGRlIGxhcyBsw61uZWFzCiAgICAgICAgY2lyY2xlX2NvbCA9ICJsaWdodGJsdWUiLCAjIGNvbG9yIGRlIGxhcyBuZXVyb25hcwogICAgICAgIHZhcl9sYWJzID0gVFJVRSwgICAgICAjIG1vc3RyYXIgbm9tYnJlcyBkZSB2YXJpYWJsZXMKICAgICAgICBjZXhfdmFsID0gMC41LCAgICAgICAgIyB0YW1hw7FvIGRlIGxvcyB2YWxvcmVzIGVuIGxhcyBjb25leGlvbmVzCiAgICAgICAgY2V4X2lucHV0ID0gMC42LCAgICAgICMgdGFtYcOxbyBkZSBsYXMgZXRpcXVldGFzIGRlIGVudHJhZGEKICAgICAgICBjZXhfaGlkZGVuID0gMC42LCAgICAgIyB0YW1hw7FvIGRlIGxhcyBldGlxdWV0YXMgb2N1bHRhcwogICAgICAgIGNleF9yZXNwb25zZSA9IDAuOCwgICAjIHRhbWHDsW8gZGUgbGEgZXRpcXVldGEgZGUgc2FsaWRhCiAgICAgICAgY2lyY2xlX2NleCA9IDQsICAgICAgICMgdGFtYcOxbyBkZSBsb3Mgbm9kb3MgKG5ldXJvbmFzKQogICAgICAgIHBvc19jb2wgPSAiZGFya2dyZWVuIiwjIGNvbG9yIGRlIHBlc29zIHBvc2l0aXZvcwogICAgICAgIG5lZ19jb2wgPSAicmVkIiAgICAgICAjIGNvbG9yIGRlIHBlc29zIG5lZ2F0aXZvcwopCgpgYGAKCgoK