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