# file.choose()

Instalar Paquetes y llamar librerias

library(ggplot2)
library(lattice)
library(caret)
library(datasets)
library(DataExplorer)
library(kernlab)
## 
## Adjuntando el paquete: 'kernlab'
## The following object is masked from 'package:ggplot2':
## 
##     alpha
library(randomForest)
## randomForest 4.7-1.1
## Type rfNews() to see new features/changes/bug fixes.
## 
## Adjuntando el paquete: 'randomForest'
## The following object is masked from 'package:ggplot2':
## 
##     margin
library(readr)
heart <- read_csv("C:/Users/sebas/OneDrive/Escritorio/Inteligencia de Negocios/Modulo 2/21 08 2024/heart.csv")
## Rows: 1025 Columns: 14
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (14): age, sex, cp, trestbps, chol, fbs, restecg, thalach, exang, oldpea...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

Base de datos

df <-  heart

Análisis Exploratorio

summary(df)
##       age             sex               cp            trestbps    
##  Min.   :29.00   Min.   :0.0000   Min.   :0.0000   Min.   : 94.0  
##  1st Qu.:48.00   1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:120.0  
##  Median :56.00   Median :1.0000   Median :1.0000   Median :130.0  
##  Mean   :54.43   Mean   :0.6956   Mean   :0.9424   Mean   :131.6  
##  3rd Qu.:61.00   3rd Qu.:1.0000   3rd Qu.:2.0000   3rd Qu.:140.0  
##  Max.   :77.00   Max.   :1.0000   Max.   :3.0000   Max.   :200.0  
##       chol          fbs            restecg          thalach     
##  Min.   :126   Min.   :0.0000   Min.   :0.0000   Min.   : 71.0  
##  1st Qu.:211   1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:132.0  
##  Median :240   Median :0.0000   Median :1.0000   Median :152.0  
##  Mean   :246   Mean   :0.1493   Mean   :0.5298   Mean   :149.1  
##  3rd Qu.:275   3rd Qu.:0.0000   3rd Qu.:1.0000   3rd Qu.:166.0  
##  Max.   :564   Max.   :1.0000   Max.   :2.0000   Max.   :202.0  
##      exang           oldpeak          slope             ca        
##  Min.   :0.0000   Min.   :0.000   Min.   :0.000   Min.   :0.0000  
##  1st Qu.:0.0000   1st Qu.:0.000   1st Qu.:1.000   1st Qu.:0.0000  
##  Median :0.0000   Median :0.800   Median :1.000   Median :0.0000  
##  Mean   :0.3366   Mean   :1.072   Mean   :1.385   Mean   :0.7541  
##  3rd Qu.:1.0000   3rd Qu.:1.800   3rd Qu.:2.000   3rd Qu.:1.0000  
##  Max.   :1.0000   Max.   :6.200   Max.   :2.000   Max.   :4.0000  
##       thal           target      
##  Min.   :0.000   Min.   :0.0000  
##  1st Qu.:2.000   1st Qu.:0.0000  
##  Median :2.000   Median :1.0000  
##  Mean   :2.324   Mean   :0.5132  
##  3rd Qu.:3.000   3rd Qu.:1.0000  
##  Max.   :3.000   Max.   :1.0000
df$target <- as.factor(df$target)
str(df)
## spc_tbl_ [1,025 × 14] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ age     : num [1:1025] 52 53 70 61 62 58 58 55 46 54 ...
##  $ sex     : num [1:1025] 1 1 1 1 0 0 1 1 1 1 ...
##  $ cp      : num [1:1025] 0 0 0 0 0 0 0 0 0 0 ...
##  $ trestbps: num [1:1025] 125 140 145 148 138 100 114 160 120 122 ...
##  $ chol    : num [1:1025] 212 203 174 203 294 248 318 289 249 286 ...
##  $ fbs     : num [1:1025] 0 1 0 0 1 0 0 0 0 0 ...
##  $ restecg : num [1:1025] 1 0 1 1 1 0 2 0 0 0 ...
##  $ thalach : num [1:1025] 168 155 125 161 106 122 140 145 144 116 ...
##  $ exang   : num [1:1025] 0 1 1 0 0 0 0 1 0 1 ...
##  $ oldpeak : num [1:1025] 1 3.1 2.6 0 1.9 1 4.4 0.8 0.8 3.2 ...
##  $ slope   : num [1:1025] 2 0 0 2 1 1 0 1 2 1 ...
##  $ ca      : num [1:1025] 2 0 0 1 3 0 3 1 0 2 ...
##  $ thal    : num [1:1025] 3 3 3 3 2 2 1 3 3 2 ...
##  $ target  : Factor w/ 2 levels "0","1": 1 1 1 1 1 2 1 1 1 1 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   age = col_double(),
##   ..   sex = col_double(),
##   ..   cp = col_double(),
##   ..   trestbps = col_double(),
##   ..   chol = col_double(),
##   ..   fbs = col_double(),
##   ..   restecg = col_double(),
##   ..   thalach = col_double(),
##   ..   exang = col_double(),
##   ..   oldpeak = col_double(),
##   ..   slope = col_double(),
##   ..   ca = col_double(),
##   ..   thal = col_double(),
##   ..   target = col_double()
##   .. )
##  - attr(*, "problems")=<externalptr>
plot_missing(df)

** NOTA: La variable que queremos predecir debe tener formato de FACTOR**

Partir los datos 80-20

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

1. Modelo svmLinear

modelo1 <- train(target ~ ., data=entrenamiento,
                 method = "svmLinear", #Cambiar
                 preProcess= c("scale","center"),
                 trControl = trainControl(method="cv",number=10),
                 tuneGrid = data.frame(C=1) #Cambiar
                 )
resultado_entrenamiento1 <- predict(modelo1,entrenamiento)
resultado_prueba1 <- predict(modelo1,prueba)

#Matriz de Confusión del Resultado del Entrenamiento
mcre1 <- confusionMatrix(resultado_entrenamiento1, entrenamiento$target)

#Matriz de Confusión del Resultado de la Prueba
mcrp1 <- confusionMatrix(resultado_prueba1, prueba$target)

2. Modelo svmRadial

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

#Matriz de Confusión del Resultado del Entrenamiento
mcre2 <- confusionMatrix(resultado_entrenamiento2, entrenamiento$target)

#Matriz de Confusión del Resultado de la Prueba
mcrp2 <- confusionMatrix(resultado_prueba2, prueba$target)

3. Modelo svmPoly

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

#Matriz de Confusión del Resultado del Entrenamiento
mcre3 <- confusionMatrix(resultado_entrenamiento3, entrenamiento$target)

#Matriz de Confusión del Resultado de la Prueba
mcrp3 <- confusionMatrix(resultado_prueba3, prueba$target)

4. Modelo rpart

modelo4 <- train(target ~ ., 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)

#Matriz de Confusión del Resultado del Entrenamiento
mcre4 <- confusionMatrix(resultado_entrenamiento4, entrenamiento$target)

#Matriz de Confusión del Resultado de la Prueba
mcrp4 <- confusionMatrix(resultado_prueba4, prueba$target)

5. Modelo nnet

modelo5 <- train(target ~ ., data=entrenamiento,
                 method = "nnet", #Cambiar
                 preProcess= c("scale","center"),
                 trControl = trainControl(method="cv",number=10)
                 )
## # weights:  16
## initial  value 535.297017 
## iter  10 value 278.617685
## iter  20 value 270.443942
## iter  30 value 259.784344
## iter  40 value 253.963056
## iter  50 value 253.879023
## iter  60 value 253.860873
## final  value 253.858136 
## converged
## # weights:  46
## initial  value 511.068394 
## iter  10 value 244.697464
## iter  20 value 208.077202
## iter  30 value 184.486692
## iter  40 value 165.983978
## iter  50 value 155.294249
## iter  60 value 154.980028
## iter  60 value 154.980028
## iter  60 value 154.980028
## final  value 154.980028 
## converged
## # weights:  76
## initial  value 570.645313 
## iter  10 value 251.525869
## iter  20 value 179.802171
## iter  30 value 141.909339
## iter  40 value 123.166209
## iter  50 value 117.555438
## iter  60 value 111.065068
## iter  70 value 109.168064
## iter  80 value 108.280970
## iter  90 value 107.936941
## iter 100 value 107.634368
## final  value 107.634368 
## stopped after 100 iterations
## # weights:  16
## initial  value 545.919886 
## iter  10 value 302.148191
## iter  20 value 285.222964
## iter  30 value 282.138229
## iter  40 value 276.703763
## iter  50 value 272.590594
## iter  60 value 271.702143
## final  value 271.700379 
## converged
## # weights:  46
## initial  value 523.838008 
## iter  10 value 257.945042
## iter  20 value 243.363804
## iter  30 value 234.852174
## iter  40 value 210.716157
## iter  50 value 202.759614
## iter  60 value 200.469443
## iter  70 value 200.013381
## iter  80 value 199.558444
## iter  90 value 199.054811
## iter 100 value 198.725773
## final  value 198.725773 
## stopped after 100 iterations
## # weights:  76
## initial  value 499.330190 
## iter  10 value 243.185520
## iter  20 value 191.343213
## iter  30 value 160.121932
## iter  40 value 145.251552
## iter  50 value 138.106593
## iter  60 value 136.473415
## iter  70 value 135.610416
## iter  80 value 135.377331
## iter  90 value 135.210048
## iter 100 value 134.851446
## final  value 134.851446 
## stopped after 100 iterations
## # weights:  16
## initial  value 535.882478 
## iter  10 value 331.125041
## iter  20 value 289.566889
## iter  30 value 280.897794
## iter  40 value 274.544100
## iter  50 value 274.249920
## iter  60 value 274.226464
## final  value 274.223707 
## converged
## # weights:  46
## initial  value 578.721040 
## iter  10 value 277.697309
## iter  20 value 233.196122
## iter  30 value 200.578983
## iter  40 value 177.761306
## iter  50 value 162.612449
## iter  60 value 158.753881
## iter  70 value 155.177732
## iter  80 value 153.728874
## iter  90 value 153.510469
## iter 100 value 153.431901
## final  value 153.431901 
## stopped after 100 iterations
## # weights:  76
## initial  value 543.585645 
## iter  10 value 217.473391
## iter  20 value 134.403582
## iter  30 value 102.198891
## iter  40 value 77.242495
## iter  50 value 68.123567
## iter  60 value 66.354254
## iter  70 value 65.415009
## iter  80 value 64.418156
## iter  90 value 63.708150
## iter 100 value 63.309837
## final  value 63.309837 
## stopped after 100 iterations
## # weights:  16
## initial  value 516.801720 
## iter  10 value 347.044214
## iter  20 value 270.680164
## iter  30 value 258.359799
## iter  40 value 258.067335
## iter  50 value 254.788053
## iter  60 value 240.252700
## final  value 240.164529 
## converged
## # weights:  46
## initial  value 600.518144 
## iter  10 value 231.689366
## iter  20 value 182.813987
## iter  30 value 143.496960
## iter  40 value 131.333391
## iter  50 value 121.278988
## iter  60 value 117.392105
## iter  70 value 112.191690
## iter  80 value 105.845856
## iter  90 value 105.039159
## iter 100 value 104.968303
## final  value 104.968303 
## stopped after 100 iterations
## # weights:  76
## initial  value 558.894928 
## iter  10 value 239.386001
## iter  20 value 167.796671
## iter  30 value 113.479146
## iter  40 value 100.585111
## iter  50 value 95.862835
## iter  60 value 93.899369
## iter  70 value 91.945590
## iter  80 value 91.326173
## iter  90 value 88.668751
## iter 100 value 88.007157
## final  value 88.007157 
## stopped after 100 iterations
## # weights:  16
## initial  value 534.765717 
## iter  10 value 267.695723
## iter  20 value 263.349862
## final  value 263.213664 
## converged
## # weights:  46
## initial  value 589.771492 
## iter  10 value 255.440528
## iter  20 value 225.268918
## iter  30 value 209.850679
## iter  40 value 206.943100
## iter  50 value 199.595804
## iter  60 value 194.832498
## iter  70 value 194.171536
## iter  80 value 192.316646
## iter  90 value 190.878844
## iter 100 value 190.689874
## final  value 190.689874 
## stopped after 100 iterations
## # weights:  76
## initial  value 730.737672 
## iter  10 value 240.725393
## iter  20 value 207.401760
## iter  30 value 180.527154
## iter  40 value 155.702917
## iter  50 value 139.109378
## iter  60 value 131.574992
## iter  70 value 127.209405
## iter  80 value 125.089779
## iter  90 value 123.812350
## iter 100 value 121.053397
## final  value 121.053397 
## stopped after 100 iterations
## # weights:  16
## initial  value 548.171765 
## iter  10 value 334.202017
## iter  20 value 260.705406
## iter  30 value 259.256607
## iter  40 value 259.000821
## iter  50 value 258.900847
## iter  60 value 258.536916
## iter  70 value 258.483766
## iter  80 value 258.481672
## iter  90 value 258.478518
## iter 100 value 258.463570
## final  value 258.463570 
## stopped after 100 iterations
## # weights:  46
## initial  value 545.766622 
## iter  10 value 273.496401
## iter  20 value 207.089572
## iter  30 value 169.631909
## iter  40 value 150.587441
## iter  50 value 145.000121
## iter  60 value 119.983977
## iter  70 value 107.662621
## iter  80 value 105.340966
## iter  90 value 101.917607
## iter 100 value 99.915938
## final  value 99.915938 
## stopped after 100 iterations
## # weights:  76
## initial  value 479.343335 
## iter  10 value 199.650836
## iter  20 value 118.861592
## iter  30 value 95.296153
## iter  40 value 81.785373
## iter  50 value 69.897162
## iter  60 value 63.135100
## iter  70 value 60.006237
## iter  80 value 59.157854
## iter  90 value 58.907978
## iter 100 value 58.741889
## final  value 58.741889 
## stopped after 100 iterations
## # weights:  16
## initial  value 517.856276 
## iter  10 value 279.575277
## iter  20 value 256.117972
## iter  30 value 255.346855
## iter  40 value 255.063786
## iter  50 value 255.037894
## iter  60 value 254.853043
## iter  70 value 254.819481
## iter  80 value 254.815984
## iter  90 value 254.812725
## iter 100 value 254.806818
## final  value 254.806818 
## stopped after 100 iterations
## # weights:  46
## initial  value 525.587585 
## iter  10 value 308.666077
## iter  20 value 252.804801
## iter  30 value 244.241159
## iter  40 value 228.439069
## iter  50 value 215.940970
## iter  60 value 201.615389
## iter  70 value 196.436263
## iter  80 value 195.156876
## iter  90 value 194.821880
## iter 100 value 194.243884
## final  value 194.243884 
## stopped after 100 iterations
## # weights:  76
## initial  value 499.230825 
## iter  10 value 224.605606
## iter  20 value 166.529235
## iter  30 value 145.825673
## iter  40 value 127.681850
## iter  50 value 119.046907
## iter  60 value 116.599417
## iter  70 value 116.229167
## final  value 116.229016 
## converged
## # weights:  16
## initial  value 519.913629 
## iter  10 value 308.812051
## iter  20 value 264.549379
## iter  30 value 261.985273
## iter  40 value 261.970416
## final  value 261.970259 
## converged
## # weights:  46
## initial  value 511.511309 
## iter  10 value 310.224185
## iter  20 value 254.481780
## iter  30 value 225.896731
## iter  40 value 210.696997
## iter  50 value 206.483809
## iter  60 value 203.701096
## iter  70 value 198.046573
## iter  80 value 193.990646
## iter  90 value 192.395986
## iter 100 value 192.211057
## final  value 192.211057 
## stopped after 100 iterations
## # weights:  76
## initial  value 497.763134 
## iter  10 value 235.078482
## iter  20 value 175.898469
## iter  30 value 158.522791
## iter  40 value 151.459742
## iter  50 value 144.730688
## iter  60 value 142.182035
## iter  70 value 140.742696
## iter  80 value 140.133425
## iter  90 value 140.088638
## iter 100 value 140.085715
## final  value 140.085715 
## stopped after 100 iterations
## # weights:  16
## initial  value 546.648130 
## iter  10 value 260.856400
## iter  20 value 250.342334
## iter  30 value 235.386600
## iter  40 value 231.851808
## iter  50 value 230.781024
## iter  60 value 230.768416
## iter  70 value 230.735712
## iter  80 value 230.716693
## iter  90 value 230.711865
## iter 100 value 230.702128
## final  value 230.702128 
## stopped after 100 iterations
## # weights:  46
## initial  value 513.236222 
## iter  10 value 243.982202
## iter  20 value 167.014710
## iter  30 value 142.473911
## iter  40 value 122.506161
## iter  50 value 106.794635
## iter  60 value 104.899048
## iter  70 value 104.028478
## iter  80 value 103.650360
## iter  90 value 103.315760
## iter 100 value 102.932818
## final  value 102.932818 
## stopped after 100 iterations
## # weights:  76
## initial  value 521.599786 
## iter  10 value 201.719164
## iter  20 value 132.488585
## iter  30 value 86.421311
## iter  40 value 70.125387
## iter  50 value 58.356224
## iter  60 value 56.811554
## iter  70 value 56.517666
## iter  80 value 55.939425
## iter  90 value 55.617774
## iter 100 value 55.539545
## final  value 55.539545 
## stopped after 100 iterations
## # weights:  16
## initial  value 495.963714 
## iter  10 value 304.061990
## iter  20 value 277.949323
## iter  30 value 274.106604
## iter  40 value 265.580134
## iter  50 value 265.401805
## iter  60 value 265.347358
## iter  70 value 265.175004
## iter  80 value 265.041097
## iter  90 value 265.001447
## iter 100 value 264.984565
## final  value 264.984565 
## stopped after 100 iterations
## # weights:  46
## initial  value 586.489771 
## iter  10 value 258.110706
## iter  20 value 205.536274
## iter  30 value 180.472791
## iter  40 value 160.262089
## iter  50 value 155.914638
## iter  60 value 152.993170
## iter  70 value 144.885639
## iter  80 value 143.528107
## iter  90 value 143.512042
## final  value 143.511552 
## converged
## # weights:  76
## initial  value 557.335690 
## iter  10 value 223.156518
## iter  20 value 170.116484
## iter  30 value 115.613264
## iter  40 value 78.694420
## iter  50 value 75.671353
## iter  60 value 74.026918
## iter  70 value 72.393732
## iter  80 value 71.165545
## iter  90 value 70.568936
## iter 100 value 69.966933
## final  value 69.966933 
## stopped after 100 iterations
## # weights:  16
## initial  value 545.623127 
## iter  10 value 278.191336
## iter  20 value 267.941506
## iter  30 value 266.939123
## final  value 266.938651 
## converged
## # weights:  46
## initial  value 506.383910 
## iter  10 value 242.582459
## iter  20 value 231.357994
## iter  30 value 223.341632
## iter  40 value 221.801655
## iter  50 value 219.904286
## iter  60 value 219.258433
## iter  70 value 219.151189
## final  value 219.150622 
## converged
## # weights:  76
## initial  value 574.224515 
## iter  10 value 236.047960
## iter  20 value 197.225925
## iter  30 value 176.335265
## iter  40 value 164.154461
## iter  50 value 153.859015
## iter  60 value 146.015430
## iter  70 value 138.227105
## iter  80 value 132.706067
## iter  90 value 131.358658
## iter 100 value 130.911490
## final  value 130.911490 
## stopped after 100 iterations
## # weights:  16
## initial  value 531.118010 
## iter  10 value 297.703542
## iter  20 value 265.674960
## iter  30 value 260.312818
## iter  40 value 249.157314
## iter  50 value 248.745013
## iter  60 value 247.216212
## iter  70 value 247.113551
## iter  80 value 247.110623
## iter  90 value 247.109836
## iter  90 value 247.109835
## iter  90 value 247.109835
## final  value 247.109835 
## converged
## # weights:  46
## initial  value 540.677376 
## iter  10 value 227.830439
## iter  20 value 175.018447
## iter  30 value 153.631042
## iter  40 value 133.678274
## iter  50 value 127.247538
## iter  60 value 126.840457
## iter  70 value 126.449508
## iter  80 value 126.368132
## iter  90 value 126.290775
## iter 100 value 126.220568
## final  value 126.220568 
## stopped after 100 iterations
## # weights:  76
## initial  value 498.577976 
## iter  10 value 205.153502
## iter  20 value 118.929025
## iter  30 value 97.465208
## iter  40 value 83.968658
## iter  50 value 82.536636
## iter  60 value 82.119919
## iter  70 value 81.212460
## iter  80 value 80.295698
## iter  90 value 78.926511
## iter 100 value 78.554372
## final  value 78.554372 
## stopped after 100 iterations
## # weights:  16
## initial  value 521.334444 
## iter  10 value 314.329205
## iter  20 value 259.841805
## iter  30 value 248.866964
## iter  40 value 238.942240
## iter  50 value 238.790747
## iter  60 value 238.715792
## iter  70 value 238.702237
## iter  80 value 238.695726
## iter  90 value 238.688258
## iter 100 value 238.680972
## final  value 238.680972 
## stopped after 100 iterations
## # weights:  46
## initial  value 532.892595 
## iter  10 value 252.192898
## iter  20 value 216.601603
## iter  30 value 184.905406
## iter  40 value 166.641942
## iter  50 value 158.802370
## iter  60 value 156.136547
## iter  70 value 152.330957
## iter  80 value 146.081750
## iter  90 value 138.691211
## iter 100 value 132.347206
## final  value 132.347206 
## stopped after 100 iterations
## # weights:  76
## initial  value 574.726235 
## iter  10 value 254.939449
## iter  20 value 149.240633
## iter  30 value 107.037048
## iter  40 value 95.777524
## iter  50 value 90.450781
## iter  60 value 84.479288
## iter  70 value 82.263255
## iter  80 value 82.213182
## final  value 82.212972 
## converged
## # weights:  16
## initial  value 522.286914 
## iter  10 value 323.054969
## iter  20 value 267.089293
## iter  30 value 263.365929
## iter  40 value 262.896373
## iter  50 value 262.886036
## final  value 262.885221 
## converged
## # weights:  46
## initial  value 483.621802 
## iter  10 value 244.895477
## iter  20 value 216.086622
## iter  30 value 190.130496
## iter  40 value 177.150308
## iter  50 value 168.309464
## iter  60 value 167.290648
## iter  70 value 167.100702
## iter  80 value 167.098257
## final  value 167.098253 
## converged
## # weights:  76
## initial  value 608.642851 
## iter  10 value 226.029071
## iter  20 value 185.266013
## iter  30 value 167.181936
## iter  40 value 156.654901
## iter  50 value 138.510733
## iter  60 value 133.964309
## iter  70 value 128.510305
## iter  80 value 127.240682
## iter  90 value 127.136294
## iter 100 value 127.116672
## final  value 127.116672 
## stopped after 100 iterations
## # weights:  16
## initial  value 553.567559 
## iter  10 value 378.655700
## iter  20 value 264.646922
## iter  30 value 255.274706
## iter  40 value 254.499152
## iter  50 value 253.624597
## iter  60 value 253.189454
## iter  70 value 253.164916
## iter  80 value 253.163414
## final  value 253.163401 
## converged
## # weights:  46
## initial  value 514.043006 
## iter  10 value 238.452421
## iter  20 value 183.104531
## iter  30 value 154.268507
## iter  40 value 135.425679
## iter  50 value 127.746792
## iter  60 value 127.465304
## iter  70 value 127.316005
## iter  80 value 127.226988
## iter  90 value 127.144892
## iter 100 value 126.446408
## final  value 126.446408 
## stopped after 100 iterations
## # weights:  76
## initial  value 573.759769 
## iter  10 value 224.403385
## iter  20 value 145.081933
## iter  30 value 83.740149
## iter  40 value 75.584617
## iter  50 value 72.694024
## iter  60 value 71.125925
## iter  70 value 60.087839
## iter  80 value 54.300162
## iter  90 value 53.182555
## iter 100 value 52.255707
## final  value 52.255707 
## stopped after 100 iterations
## # weights:  16
## initial  value 525.699823 
## iter  10 value 301.416418
## iter  20 value 259.175447
## iter  30 value 255.324998
## iter  40 value 241.678316
## iter  50 value 240.887242
## iter  60 value 239.876717
## iter  70 value 238.395933
## iter  80 value 238.312939
## iter  90 value 238.250619
## iter 100 value 238.238112
## final  value 238.238112 
## stopped after 100 iterations
## # weights:  46
## initial  value 524.448369 
## iter  10 value 254.882932
## iter  20 value 193.293946
## iter  30 value 170.630171
## iter  40 value 156.943166
## iter  50 value 155.521405
## iter  60 value 155.475016
## iter  70 value 155.473330
## iter  70 value 155.473329
## iter  70 value 155.473329
## final  value 155.473329 
## converged
## # weights:  76
## initial  value 494.503352 
## iter  10 value 216.722692
## iter  20 value 144.087309
## iter  30 value 118.693125
## iter  40 value 107.183668
## iter  50 value 102.865083
## iter  60 value 101.686729
## iter  70 value 100.374856
## iter  80 value 100.242725
## iter  90 value 100.209397
## iter 100 value 100.118022
## final  value 100.118022 
## stopped after 100 iterations
## # weights:  16
## initial  value 526.193498 
## iter  10 value 335.553457
## iter  20 value 265.678500
## iter  30 value 260.794319
## iter  40 value 260.186419
## iter  50 value 260.054637
## final  value 260.043781 
## converged
## # weights:  46
## initial  value 584.027537 
## iter  10 value 235.458140
## iter  20 value 209.791206
## iter  30 value 187.880755
## iter  40 value 176.484231
## iter  50 value 173.053269
## iter  60 value 171.422241
## iter  70 value 170.738931
## iter  80 value 170.699974
## final  value 170.699859 
## converged
## # weights:  76
## initial  value 543.432592 
## iter  10 value 255.391304
## iter  20 value 197.990740
## iter  30 value 171.878173
## iter  40 value 159.532216
## iter  50 value 147.787260
## iter  60 value 141.218571
## iter  70 value 137.934477
## iter  80 value 136.376631
## iter  90 value 130.838716
## iter 100 value 127.516659
## final  value 127.516659 
## stopped after 100 iterations
## # weights:  16
## initial  value 521.525181 
## iter  10 value 279.550614
## iter  20 value 251.866146
## iter  30 value 248.113668
## iter  40 value 240.846962
## iter  50 value 239.274500
## iter  60 value 238.969561
## iter  70 value 238.942787
## iter  80 value 238.902174
## iter  90 value 238.901549
## iter 100 value 238.898606
## final  value 238.898606 
## stopped after 100 iterations
## # weights:  46
## initial  value 536.412669 
## iter  10 value 249.655420
## iter  20 value 199.235766
## iter  30 value 183.951768
## iter  40 value 172.048784
## iter  50 value 162.421138
## iter  60 value 161.282001
## iter  70 value 160.864155
## iter  80 value 160.632464
## iter  90 value 160.398330
## iter 100 value 160.270370
## final  value 160.270370 
## stopped after 100 iterations
## # weights:  76
## initial  value 468.535154 
## iter  10 value 228.304196
## iter  20 value 160.673124
## iter  30 value 115.388050
## iter  40 value 90.954701
## iter  50 value 87.386781
## iter  60 value 85.844564
## iter  70 value 85.197787
## iter  80 value 84.218688
## iter  90 value 83.265769
## iter 100 value 83.034968
## final  value 83.034968 
## stopped after 100 iterations
## # weights:  16
## initial  value 525.404298 
## iter  10 value 294.293039
## iter  20 value 273.701136
## iter  30 value 265.589385
## iter  40 value 259.182212
## iter  50 value 256.363405
## iter  60 value 244.223032
## iter  70 value 242.251621
## iter  80 value 242.243206
## iter  90 value 242.239733
## iter 100 value 242.234374
## final  value 242.234374 
## stopped after 100 iterations
## # weights:  46
## initial  value 543.218373 
## iter  10 value 276.415173
## iter  20 value 222.011207
## iter  30 value 205.124108
## iter  40 value 189.555483
## iter  50 value 182.488347
## iter  60 value 182.315776
## final  value 182.315725 
## converged
## # weights:  76
## initial  value 526.175887 
## iter  10 value 248.413851
## iter  20 value 182.189285
## iter  30 value 152.398564
## iter  40 value 139.131033
## iter  50 value 133.600740
## iter  60 value 127.386273
## iter  70 value 124.717956
## iter  80 value 124.643534
## final  value 124.642590 
## converged
## # weights:  16
## initial  value 527.279184 
## iter  10 value 318.654645
## iter  20 value 285.258128
## iter  30 value 279.834470
## final  value 279.827767 
## converged
## # weights:  46
## initial  value 529.496940 
## iter  10 value 350.607846
## iter  20 value 307.904121
## iter  30 value 273.613370
## iter  40 value 259.185046
## iter  50 value 232.510920
## iter  60 value 212.968287
## iter  70 value 209.809590
## iter  80 value 209.054486
## iter  90 value 208.595465
## iter 100 value 208.560753
## final  value 208.560753 
## stopped after 100 iterations
## # weights:  76
## initial  value 517.505092 
## iter  10 value 298.851753
## iter  20 value 239.060397
## iter  30 value 212.267659
## iter  40 value 196.718024
## iter  50 value 186.143216
## iter  60 value 182.068367
## iter  70 value 180.705582
## iter  80 value 176.946877
## iter  90 value 169.089179
## iter 100 value 167.407992
## final  value 167.407992 
## stopped after 100 iterations
## # weights:  16
## initial  value 521.062434 
## iter  10 value 290.225469
## iter  20 value 270.600962
## iter  30 value 264.324692
## iter  40 value 258.686953
## iter  50 value 257.260520
## iter  60 value 257.119658
## iter  70 value 256.616409
## iter  80 value 256.612844
## iter  90 value 256.612322
## final  value 256.610255 
## converged
## # weights:  46
## initial  value 527.478949 
## iter  10 value 242.518250
## iter  20 value 200.228448
## iter  30 value 158.574341
## iter  40 value 147.478674
## iter  50 value 142.074998
## iter  60 value 141.663553
## iter  70 value 141.374987
## iter  80 value 140.502965
## iter  90 value 140.000417
## iter 100 value 139.801878
## final  value 139.801878 
## stopped after 100 iterations
## # weights:  76
## initial  value 525.114691 
## iter  10 value 213.247894
## iter  20 value 150.157487
## iter  30 value 100.599547
## iter  40 value 86.931552
## iter  50 value 83.789155
## iter  60 value 78.973052
## iter  70 value 77.775633
## iter  80 value 76.635395
## iter  90 value 76.220970
## iter 100 value 75.936712
## final  value 75.936712 
## stopped after 100 iterations
## # weights:  16
## initial  value 543.023592 
## iter  10 value 393.414415
## iter  20 value 275.881949
## iter  30 value 264.089709
## iter  40 value 262.953030
## iter  50 value 262.254092
## iter  60 value 260.931619
## iter  70 value 260.778498
## iter  80 value 260.737136
## iter  90 value 260.616218
## iter 100 value 260.553940
## final  value 260.553940 
## stopped after 100 iterations
## # weights:  46
## initial  value 544.124581 
## iter  10 value 266.049761
## iter  20 value 225.313589
## iter  30 value 202.585094
## iter  40 value 189.233747
## iter  50 value 184.482987
## iter  60 value 180.858128
## iter  70 value 172.690680
## iter  80 value 165.928132
## iter  90 value 165.761538
## final  value 165.761468 
## converged
## # weights:  76
## initial  value 526.631720 
## iter  10 value 232.869313
## iter  20 value 179.109467
## iter  30 value 141.719941
## iter  40 value 93.248402
## iter  50 value 86.911240
## iter  60 value 81.731277
## iter  70 value 77.849851
## iter  80 value 77.350858
## iter  90 value 77.337273
## iter 100 value 77.333079
## final  value 77.333079 
## stopped after 100 iterations
## # weights:  16
## initial  value 523.008632 
## iter  10 value 299.109568
## iter  20 value 274.988109
## iter  30 value 270.773879
## iter  40 value 270.510001
## iter  50 value 270.505034
## final  value 270.505029 
## converged
## # weights:  46
## initial  value 521.096309 
## iter  10 value 278.644802
## iter  20 value 241.263346
## iter  30 value 210.864415
## iter  40 value 185.448925
## iter  50 value 176.742498
## iter  60 value 173.464797
## iter  70 value 171.981534
## iter  80 value 171.256006
## iter  90 value 169.802724
## iter 100 value 168.519829
## final  value 168.519829 
## stopped after 100 iterations
## # weights:  76
## initial  value 509.406519 
## iter  10 value 234.323738
## iter  20 value 177.993005
## iter  30 value 160.586487
## iter  40 value 151.898104
## iter  50 value 140.019543
## iter  60 value 135.638131
## iter  70 value 131.643960
## iter  80 value 130.088248
## iter  90 value 127.963298
## iter 100 value 126.551979
## final  value 126.551979 
## stopped after 100 iterations
## # weights:  16
## initial  value 519.642450 
## iter  10 value 267.092452
## iter  20 value 265.328766
## iter  30 value 263.709142
## iter  40 value 262.966237
## iter  50 value 261.188760
## iter  60 value 260.865008
## iter  70 value 260.762708
## iter  80 value 260.738907
## iter  90 value 260.654776
## iter 100 value 260.648104
## final  value 260.648104 
## stopped after 100 iterations
## # weights:  46
## initial  value 535.230597 
## iter  10 value 241.717850
## iter  20 value 206.438320
## iter  30 value 175.222508
## iter  40 value 162.818427
## iter  50 value 155.603575
## iter  60 value 150.482175
## iter  70 value 146.941216
## iter  80 value 142.219196
## iter  90 value 141.803148
## iter 100 value 141.724765
## final  value 141.724765 
## stopped after 100 iterations
## # weights:  76
## initial  value 493.243511 
## iter  10 value 221.712675
## iter  20 value 149.732595
## iter  30 value 109.685031
## iter  40 value 100.481537
## iter  50 value 94.821615
## iter  60 value 90.418492
## iter  70 value 89.618876
## iter  80 value 89.441347
## iter  90 value 89.378157
## iter 100 value 89.194764
## final  value 89.194764 
## stopped after 100 iterations
## # weights:  16
## initial  value 520.570993 
## iter  10 value 279.065802
## iter  20 value 253.473218
## iter  30 value 251.206353
## iter  40 value 247.890757
## iter  50 value 244.395905
## iter  60 value 236.097705
## final  value 236.028541 
## converged
## # weights:  46
## initial  value 532.394420 
## iter  10 value 244.148291
## iter  20 value 194.311533
## iter  30 value 169.929846
## iter  40 value 158.668957
## iter  50 value 148.694121
## iter  60 value 145.363158
## iter  70 value 144.435942
## iter  80 value 144.242842
## iter  90 value 144.181448
## iter 100 value 144.176622
## final  value 144.176622 
## stopped after 100 iterations
## # weights:  76
## initial  value 524.639537 
## iter  10 value 204.420022
## iter  20 value 110.354804
## iter  30 value 80.122860
## iter  40 value 74.359622
## iter  50 value 70.622855
## iter  60 value 69.533009
## iter  70 value 69.054107
## iter  80 value 68.707536
## iter  90 value 68.415781
## iter 100 value 68.194830
## final  value 68.194830 
## stopped after 100 iterations
## # weights:  16
## initial  value 516.209080 
## iter  10 value 296.508932
## iter  20 value 274.112386
## iter  30 value 265.988039
## iter  40 value 265.416376
## iter  50 value 265.382095
## final  value 265.380352 
## converged
## # weights:  46
## initial  value 510.969369 
## iter  10 value 243.739509
## iter  20 value 228.087743
## iter  30 value 218.492492
## iter  40 value 206.354832
## iter  50 value 205.186754
## iter  60 value 204.924432
## iter  70 value 203.142648
## iter  80 value 202.712703
## final  value 202.712214 
## converged
## # weights:  76
## initial  value 519.499589 
## iter  10 value 241.003591
## iter  20 value 194.462000
## iter  30 value 172.234548
## iter  40 value 159.478592
## iter  50 value 148.945729
## iter  60 value 143.766807
## iter  70 value 139.925462
## iter  80 value 137.353414
## iter  90 value 137.004565
## iter 100 value 136.943883
## final  value 136.943883 
## stopped after 100 iterations
## # weights:  16
## initial  value 514.548568 
## iter  10 value 310.411711
## iter  20 value 253.153864
## iter  30 value 249.734296
## iter  40 value 246.114425
## iter  50 value 241.035180
## iter  60 value 238.564238
## iter  70 value 238.556576
## iter  80 value 238.555479
## final  value 238.555326 
## converged
## # weights:  46
## initial  value 542.691109 
## iter  10 value 243.998729
## iter  20 value 183.863007
## iter  30 value 152.737553
## iter  40 value 146.819997
## iter  50 value 142.032027
## iter  60 value 135.020035
## iter  70 value 132.772007
## iter  80 value 131.893625
## iter  90 value 131.385555
## iter 100 value 131.129878
## final  value 131.129878 
## stopped after 100 iterations
## # weights:  76
## initial  value 662.546280 
## iter  10 value 260.107697
## iter  20 value 176.176634
## iter  30 value 132.637829
## iter  40 value 98.750476
## iter  50 value 74.080858
## iter  60 value 55.259914
## iter  70 value 42.536457
## iter  80 value 36.399212
## iter  90 value 33.807919
## iter 100 value 32.122810
## final  value 32.122810 
## stopped after 100 iterations
## # weights:  16
## initial  value 522.178785 
## iter  10 value 299.584795
## iter  20 value 262.480323
## iter  30 value 259.552984
## iter  40 value 255.116706
## iter  50 value 249.694372
## iter  60 value 248.758246
## final  value 248.757032 
## converged
## # weights:  46
## initial  value 510.620408 
## iter  10 value 211.520346
## iter  20 value 171.470149
## iter  30 value 144.266206
## iter  40 value 133.945260
## iter  50 value 131.963844
## iter  60 value 131.284010
## iter  70 value 130.928560
## iter  80 value 130.834648
## iter  90 value 130.803297
## iter 100 value 130.791755
## final  value 130.791755 
## stopped after 100 iterations
## # weights:  76
## initial  value 531.976288 
## iter  10 value 256.798553
## iter  20 value 189.276808
## iter  30 value 134.200214
## iter  40 value 108.796291
## iter  50 value 97.484073
## iter  60 value 93.826191
## iter  70 value 91.943777
## iter  80 value 90.704345
## iter  90 value 88.021859
## iter 100 value 87.332200
## final  value 87.332200 
## stopped after 100 iterations
## # weights:  16
## initial  value 592.981804 
## iter  10 value 354.869542
## iter  20 value 300.926172
## iter  30 value 283.728252
## iter  40 value 273.916757
## iter  50 value 273.419313
## final  value 273.294363 
## converged
## # weights:  46
## initial  value 545.058894 
## iter  10 value 253.919591
## iter  20 value 221.792709
## iter  30 value 193.620277
## iter  40 value 178.044212
## iter  50 value 171.442564
## iter  60 value 169.258933
## iter  70 value 169.000828
## iter  80 value 168.999838
## iter  80 value 168.999837
## iter  80 value 168.999837
## final  value 168.999837 
## converged
## # weights:  76
## initial  value 532.138045 
## iter  10 value 254.027921
## iter  20 value 180.634789
## iter  30 value 158.414030
## iter  40 value 142.223935
## iter  50 value 133.008859
## iter  60 value 129.094821
## iter  70 value 126.401010
## iter  80 value 125.062317
## iter  90 value 123.202527
## iter 100 value 122.212702
## final  value 122.212702 
## stopped after 100 iterations
## # weights:  16
## initial  value 613.494891 
## iter  10 value 365.724772
## iter  20 value 316.606185
## iter  30 value 303.832994
## iter  40 value 302.149209
## iter  50 value 290.976115
## iter  60 value 290.553477
## iter  70 value 290.549891
## iter  80 value 290.548452
## final  value 290.547121 
## converged
## # weights:  46
## initial  value 571.894542 
## iter  10 value 271.362693
## iter  20 value 202.922133
## iter  30 value 160.781913
## iter  40 value 142.965072
## iter  50 value 139.267298
## iter  60 value 129.850518
## iter  70 value 127.789593
## iter  80 value 127.416808
## iter  90 value 126.990709
## iter 100 value 126.441267
## final  value 126.441267 
## stopped after 100 iterations
## # weights:  76
## initial  value 561.916147 
## iter  10 value 236.300918
## iter  20 value 159.978908
## iter  30 value 149.421899
## iter  40 value 141.563004
## iter  50 value 133.946790
## iter  60 value 133.338913
## iter  70 value 133.113385
## iter  80 value 132.700834
## iter  90 value 132.233494
## iter 100 value 131.729164
## final  value 131.729164 
## stopped after 100 iterations
## # weights:  76
## initial  value 629.084987 
## iter  10 value 268.204321
## iter  20 value 202.379095
## iter  30 value 167.836302
## iter  40 value 153.554837
## iter  50 value 144.670091
## iter  60 value 135.894463
## iter  70 value 133.161628
## iter  80 value 132.541213
## iter  90 value 132.313112
## iter 100 value 132.172448
## final  value 132.172448 
## stopped after 100 iterations
resultado_entrenamiento5 <- predict(modelo5,entrenamiento)
resultado_prueba5 <- predict(modelo5,prueba)

#Matriz de Confusión del Resultado del Entrenamiento
mcre5 <- confusionMatrix(resultado_entrenamiento5, entrenamiento$target)

#Matriz de Confusión del Resultado de la Prueba
mcrp5 <- confusionMatrix(resultado_prueba5, prueba$target)

6. Modelo rf

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

#Matriz de Confusión del Resultado del Entrenamiento
mcre6 <- confusionMatrix(resultado_entrenamiento6, entrenamiento$target)

#Matriz de Confusión del Resultado de la Prueba
mcrp6 <- confusionMatrix(resultado_prueba6, prueba$target)

Resumen de Resultados

resultados <- data.frame(
  "svmLinear"=c(mcre1$overall["Accuracy"], mcrp1$overall["Accuracy"]),
  "svmRadial"=c(mcre2$overall["Accuracy"], mcrp2$overall["Accuracy"]),
  "svmPoly"=c(mcre3$overall["Accuracy"], mcrp3$overall["Accuracy"]),
  "rpart"=c(mcre4$overall["Accuracy"], mcrp4$overall["Accuracy"]),
  "nnet"=c(mcre5$overall["Accuracy"], mcrp5$overall["Accuracy"]),
  "rf"=c(mcre6$overall["Accuracy"], mcrp6$overall["Accuracy"])
)
rownames(resultados) <- c("Precisión de Entrenamiento","Prescisión de Prueba")
resultados
##                            svmLinear svmRadial   svmPoly     rpart      nnet rf
## Precisión de Entrenamiento 0.8343484         1 0.8343484 0.9159562 0.9671133  1
## Prescisión de Prueba       0.8480392         1 0.8480392 0.8774510 0.9460784  1

El modelo svmRadial y el modelo rf (rain forest) presentan sobreajuste en los resultados.En los resultados el modelo nnet es el mejor modelo a utilizar en estos datos.

LS0tDQp0aXRsZTogIkNhcmV0IEhlYXJ0Ig0KYXV0aG9yOiAiUGFibG8gU2ViYXN0aWFuIg0KZGF0ZTogIjIwMjQtMDgtMjEiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogVFJVRQ0KICAgIHRvY19mbG9hdDogVFJVRQ0KICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUNCiAgICB0aGVtZTogInNwYWNlbGFiIg0KICAgIGhpZ2hsaWdodDogImthdGUiDQotLS0NCg0KIVtdKEM6XFVzZXJzXHNlYmFzXE9uZURyaXZlXEVzY3JpdG9yaW9cSW50ZWxpZ2VuY2lhIGRlIE5lZ29jaW9zXE1vZHVsbyAyXDIxIDA4IDIwMjRcMzYwX0ZfNTI5NTM1NDY1X3dPenBUY1p2MUJOUUlqNnpRT2N0QkdPdTFzVHRWbUZ4LmpwZykNCg0KYGBge3J9DQojIGZpbGUuY2hvb3NlKCkNCmBgYA0KDQoNCg0KIyA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZTsiPkluc3RhbGFyIFBhcXVldGVzIHkgbGxhbWFyIGxpYnJlcmlhczwvc3Bhbj4NCg0KYGBge3J9DQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGxhdHRpY2UpDQpsaWJyYXJ5KGNhcmV0KQ0KbGlicmFyeShkYXRhc2V0cykNCmxpYnJhcnkoRGF0YUV4cGxvcmVyKQ0KbGlicmFyeShrZXJubGFiKQ0KbGlicmFyeShyYW5kb21Gb3Jlc3QpDQpgYGANCg0KDQpgYGB7cn0NCmxpYnJhcnkocmVhZHIpDQpoZWFydCA8LSByZWFkX2NzdigiQzovVXNlcnMvc2ViYXMvT25lRHJpdmUvRXNjcml0b3Jpby9JbnRlbGlnZW5jaWEgZGUgTmVnb2Npb3MvTW9kdWxvIDIvMjEgMDggMjAyNC9oZWFydC5jc3YiKQ0KYGBgDQoNCg0KIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij5CYXNlIGRlIGRhdG9zPC9zcGFuPg0KDQoNCmBgYHtyfQ0KZGYgPC0gIGhlYXJ0DQpgYGANCg0KDQojIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPkFuw6FsaXNpcyBFeHBsb3JhdG9yaW88L3NwYW4+DQoNCg0KYGBge3J9DQpzdW1tYXJ5KGRmKQ0KZGYkdGFyZ2V0IDwtIGFzLmZhY3RvcihkZiR0YXJnZXQpDQpzdHIoZGYpDQpwbG90X21pc3NpbmcoZGYpDQpgYGANCg0KKiogTk9UQTogTGEgdmFyaWFibGUgcXVlIHF1ZXJlbW9zIHByZWRlY2lyIGRlYmUgdGVuZXIgZm9ybWF0byBkZSBGQUNUT1IqKg0KDQojIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPlBhcnRpciBsb3MgZGF0b3MgODAtMjA8L3NwYW4+DQoNCmBgYHtyfQ0Kc2V0LnNlZWQoMTIzKQ0KcmVuZ2xvbmVzX2VudHJlbmFtaWVudG8gPC0gY3JlYXRlRGF0YVBhcnRpdGlvbihkZiR0YXJnZXQsIHA9MC44LCBsaXN0PUZBTFNFKQ0KZW50cmVuYW1pZW50byA8LSBkZltyZW5nbG9uZXNfZW50cmVuYW1pZW50byxdDQpwcnVlYmEgPC0gZGZbLXJlbmdsb25lc19lbnRyZW5hbWllbnRvLF0NCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij4xLiBNb2RlbG8gc3ZtTGluZWFyPC9zcGFuPg0KDQpgYGB7cn0NCm1vZGVsbzEgPC0gdHJhaW4odGFyZ2V0IH4gLiwgZGF0YT1lbnRyZW5hbWllbnRvLA0KICAgICAgICAgICAgICAgICBtZXRob2QgPSAic3ZtTGluZWFyIiwgI0NhbWJpYXINCiAgICAgICAgICAgICAgICAgcHJlUHJvY2Vzcz0gYygic2NhbGUiLCJjZW50ZXIiKSwNCiAgICAgICAgICAgICAgICAgdHJDb250cm9sID0gdHJhaW5Db250cm9sKG1ldGhvZD0iY3YiLG51bWJlcj0xMCksDQogICAgICAgICAgICAgICAgIHR1bmVHcmlkID0gZGF0YS5mcmFtZShDPTEpICNDYW1iaWFyDQogICAgICAgICAgICAgICAgICkNCnJlc3VsdGFkb19lbnRyZW5hbWllbnRvMSA8LSBwcmVkaWN0KG1vZGVsbzEsZW50cmVuYW1pZW50bykNCnJlc3VsdGFkb19wcnVlYmExIDwtIHByZWRpY3QobW9kZWxvMSxwcnVlYmEpDQoNCiNNYXRyaXogZGUgQ29uZnVzacOzbiBkZWwgUmVzdWx0YWRvIGRlbCBFbnRyZW5hbWllbnRvDQptY3JlMSA8LSBjb25mdXNpb25NYXRyaXgocmVzdWx0YWRvX2VudHJlbmFtaWVudG8xLCBlbnRyZW5hbWllbnRvJHRhcmdldCkNCg0KI01hdHJpeiBkZSBDb25mdXNpw7NuIGRlbCBSZXN1bHRhZG8gZGUgbGEgUHJ1ZWJhDQptY3JwMSA8LSBjb25mdXNpb25NYXRyaXgocmVzdWx0YWRvX3BydWViYTEsIHBydWViYSR0YXJnZXQpDQpgYGANCg0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij4yLiBNb2RlbG8gc3ZtUmFkaWFsPC9zcGFuPg0KYGBge3J9DQptb2RlbG8yIDwtIHRyYWluKHRhcmdldCB+IC4sIGRhdGE9ZW50cmVuYW1pZW50bywNCiAgICAgICAgICAgICAgICAgbWV0aG9kID0gInN2bVJhZGlhbCIsICNDYW1iaWFyDQogICAgICAgICAgICAgICAgIHByZVByb2Nlc3M9IGMoInNjYWxlIiwiY2VudGVyIiksDQogICAgICAgICAgICAgICAgIHRyQ29udHJvbCA9IHRyYWluQ29udHJvbChtZXRob2Q9ImN2IixudW1iZXI9MTApLA0KICAgICAgICAgICAgICAgICB0dW5lR3JpZCA9IGRhdGEuZnJhbWUoc2lnbWE9MSwgQz0xKSAjQ2FtYmlhcg0KICAgICAgICAgICAgICAgICApDQpyZXN1bHRhZG9fZW50cmVuYW1pZW50bzIgPC0gcHJlZGljdChtb2RlbG8yLGVudHJlbmFtaWVudG8pDQpyZXN1bHRhZG9fcHJ1ZWJhMiA8LSBwcmVkaWN0KG1vZGVsbzIscHJ1ZWJhKQ0KDQojTWF0cml6IGRlIENvbmZ1c2nDs24gZGVsIFJlc3VsdGFkbyBkZWwgRW50cmVuYW1pZW50bw0KbWNyZTIgPC0gY29uZnVzaW9uTWF0cml4KHJlc3VsdGFkb19lbnRyZW5hbWllbnRvMiwgZW50cmVuYW1pZW50byR0YXJnZXQpDQoNCiNNYXRyaXogZGUgQ29uZnVzacOzbiBkZWwgUmVzdWx0YWRvIGRlIGxhIFBydWViYQ0KbWNycDIgPC0gY29uZnVzaW9uTWF0cml4KHJlc3VsdGFkb19wcnVlYmEyLCBwcnVlYmEkdGFyZ2V0KQ0KYGBgDQoNCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+My4gTW9kZWxvIHN2bVBvbHk8L3NwYW4+DQpgYGB7cn0NCm1vZGVsbzMgPC0gdHJhaW4odGFyZ2V0IH4gLiwgZGF0YT1lbnRyZW5hbWllbnRvLA0KICAgICAgICAgICAgICAgICBtZXRob2QgPSAic3ZtUG9seSIsICNDYW1iaWFyDQogICAgICAgICAgICAgICAgIHByZVByb2Nlc3M9IGMoInNjYWxlIiwiY2VudGVyIiksDQogICAgICAgICAgICAgICAgIHRyQ29udHJvbCA9IHRyYWluQ29udHJvbChtZXRob2Q9ImN2IixudW1iZXI9MTApLA0KICAgICAgICAgICAgICAgICB0dW5lR3JpZCA9IGRhdGEuZnJhbWUoZGVncmVlPTEsIHNjYWxlPTEsIEM9MSkgI0NhbWJpYXINCiAgICAgICAgICAgICAgICAgKQ0KcmVzdWx0YWRvX2VudHJlbmFtaWVudG8zIDwtIHByZWRpY3QobW9kZWxvMyxlbnRyZW5hbWllbnRvKQ0KcmVzdWx0YWRvX3BydWViYTMgPC0gcHJlZGljdChtb2RlbG8zLHBydWViYSkNCg0KI01hdHJpeiBkZSBDb25mdXNpw7NuIGRlbCBSZXN1bHRhZG8gZGVsIEVudHJlbmFtaWVudG8NCm1jcmUzIDwtIGNvbmZ1c2lvbk1hdHJpeChyZXN1bHRhZG9fZW50cmVuYW1pZW50bzMsIGVudHJlbmFtaWVudG8kdGFyZ2V0KQ0KDQojTWF0cml6IGRlIENvbmZ1c2nDs24gZGVsIFJlc3VsdGFkbyBkZSBsYSBQcnVlYmENCm1jcnAzIDwtIGNvbmZ1c2lvbk1hdHJpeChyZXN1bHRhZG9fcHJ1ZWJhMywgcHJ1ZWJhJHRhcmdldCkNCmBgYA0KDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPjQuIE1vZGVsbyBycGFydDwvc3Bhbj4NCmBgYHtyfQ0KbW9kZWxvNCA8LSB0cmFpbih0YXJnZXQgfiAuLCBkYXRhPWVudHJlbmFtaWVudG8sDQogICAgICAgICAgICAgICAgIG1ldGhvZCA9ICJycGFydCIsICNDYW1iaWFyDQogICAgICAgICAgICAgICAgIHByZVByb2Nlc3M9IGMoInNjYWxlIiwiY2VudGVyIiksDQogICAgICAgICAgICAgICAgIHRyQ29udHJvbCA9IHRyYWluQ29udHJvbChtZXRob2Q9ImN2IixudW1iZXI9MTApLA0KICAgICAgICAgICAgICAgICB0dW5lTGVuZ3RoID0gMTAgI0NhbWJpYXINCiAgICAgICAgICAgICAgICAgKQ0KcmVzdWx0YWRvX2VudHJlbmFtaWVudG80IDwtIHByZWRpY3QobW9kZWxvNCxlbnRyZW5hbWllbnRvKQ0KcmVzdWx0YWRvX3BydWViYTQgPC0gcHJlZGljdChtb2RlbG80LHBydWViYSkNCg0KI01hdHJpeiBkZSBDb25mdXNpw7NuIGRlbCBSZXN1bHRhZG8gZGVsIEVudHJlbmFtaWVudG8NCm1jcmU0IDwtIGNvbmZ1c2lvbk1hdHJpeChyZXN1bHRhZG9fZW50cmVuYW1pZW50bzQsIGVudHJlbmFtaWVudG8kdGFyZ2V0KQ0KDQojTWF0cml6IGRlIENvbmZ1c2nDs24gZGVsIFJlc3VsdGFkbyBkZSBsYSBQcnVlYmENCm1jcnA0IDwtIGNvbmZ1c2lvbk1hdHJpeChyZXN1bHRhZG9fcHJ1ZWJhNCwgcHJ1ZWJhJHRhcmdldCkNCmBgYA0KDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPjUuIE1vZGVsbyBubmV0PC9zcGFuPg0KYGBge3J9DQptb2RlbG81IDwtIHRyYWluKHRhcmdldCB+IC4sIGRhdGE9ZW50cmVuYW1pZW50bywNCiAgICAgICAgICAgICAgICAgbWV0aG9kID0gIm5uZXQiLCAjQ2FtYmlhcg0KICAgICAgICAgICAgICAgICBwcmVQcm9jZXNzPSBjKCJzY2FsZSIsImNlbnRlciIpLA0KICAgICAgICAgICAgICAgICB0ckNvbnRyb2wgPSB0cmFpbkNvbnRyb2wobWV0aG9kPSJjdiIsbnVtYmVyPTEwKQ0KICAgICAgICAgICAgICAgICApDQpyZXN1bHRhZG9fZW50cmVuYW1pZW50bzUgPC0gcHJlZGljdChtb2RlbG81LGVudHJlbmFtaWVudG8pDQpyZXN1bHRhZG9fcHJ1ZWJhNSA8LSBwcmVkaWN0KG1vZGVsbzUscHJ1ZWJhKQ0KDQojTWF0cml6IGRlIENvbmZ1c2nDs24gZGVsIFJlc3VsdGFkbyBkZWwgRW50cmVuYW1pZW50bw0KbWNyZTUgPC0gY29uZnVzaW9uTWF0cml4KHJlc3VsdGFkb19lbnRyZW5hbWllbnRvNSwgZW50cmVuYW1pZW50byR0YXJnZXQpDQoNCiNNYXRyaXogZGUgQ29uZnVzacOzbiBkZWwgUmVzdWx0YWRvIGRlIGxhIFBydWViYQ0KbWNycDUgPC0gY29uZnVzaW9uTWF0cml4KHJlc3VsdGFkb19wcnVlYmE1LCBwcnVlYmEkdGFyZ2V0KQ0KYGBgDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPjYuIE1vZGVsbyByZjwvc3Bhbj4NCmBgYHtyfQ0KbW9kZWxvNiA8LSB0cmFpbih0YXJnZXQgfiAuLCBkYXRhPWVudHJlbmFtaWVudG8sDQogICAgICAgICAgICAgICAgIG1ldGhvZCA9ICJyZiIsICNDYW1iaWFyDQogICAgICAgICAgICAgICAgIHByZVByb2Nlc3M9IGMoInNjYWxlIiwiY2VudGVyIiksDQogICAgICAgICAgICAgICAgIHRyQ29udHJvbCA9IHRyYWluQ29udHJvbChtZXRob2Q9ImN2IixudW1iZXI9MTApLA0KICAgICAgICAgICAgICAgICB0dW5lR3JpZCA9IGV4cGFuZC5ncmlkKG10cnkgPSBjKDIsNCw2KSkNCiAgICAgICAgICAgICAgICAgKQ0KcmVzdWx0YWRvX2VudHJlbmFtaWVudG82IDwtIHByZWRpY3QobW9kZWxvNixlbnRyZW5hbWllbnRvKQ0KcmVzdWx0YWRvX3BydWViYTYgPC0gcHJlZGljdChtb2RlbG82LHBydWViYSkNCg0KI01hdHJpeiBkZSBDb25mdXNpw7NuIGRlbCBSZXN1bHRhZG8gZGVsIEVudHJlbmFtaWVudG8NCm1jcmU2IDwtIGNvbmZ1c2lvbk1hdHJpeChyZXN1bHRhZG9fZW50cmVuYW1pZW50bzYsIGVudHJlbmFtaWVudG8kdGFyZ2V0KQ0KDQojTWF0cml6IGRlIENvbmZ1c2nDs24gZGVsIFJlc3VsdGFkbyBkZSBsYSBQcnVlYmENCm1jcnA2IDwtIGNvbmZ1c2lvbk1hdHJpeChyZXN1bHRhZG9fcHJ1ZWJhNiwgcHJ1ZWJhJHRhcmdldCkNCmBgYA0KDQojIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPlJlc3VtZW4gZGUgUmVzdWx0YWRvczwvc3Bhbj4NCg0KYGBge3J9DQpyZXN1bHRhZG9zIDwtIGRhdGEuZnJhbWUoDQogICJzdm1MaW5lYXIiPWMobWNyZTEkb3ZlcmFsbFsiQWNjdXJhY3kiXSwgbWNycDEkb3ZlcmFsbFsiQWNjdXJhY3kiXSksDQogICJzdm1SYWRpYWwiPWMobWNyZTIkb3ZlcmFsbFsiQWNjdXJhY3kiXSwgbWNycDIkb3ZlcmFsbFsiQWNjdXJhY3kiXSksDQogICJzdm1Qb2x5Ij1jKG1jcmUzJG92ZXJhbGxbIkFjY3VyYWN5Il0sIG1jcnAzJG92ZXJhbGxbIkFjY3VyYWN5Il0pLA0KICAicnBhcnQiPWMobWNyZTQkb3ZlcmFsbFsiQWNjdXJhY3kiXSwgbWNycDQkb3ZlcmFsbFsiQWNjdXJhY3kiXSksDQogICJubmV0Ij1jKG1jcmU1JG92ZXJhbGxbIkFjY3VyYWN5Il0sIG1jcnA1JG92ZXJhbGxbIkFjY3VyYWN5Il0pLA0KICAicmYiPWMobWNyZTYkb3ZlcmFsbFsiQWNjdXJhY3kiXSwgbWNycDYkb3ZlcmFsbFsiQWNjdXJhY3kiXSkNCikNCnJvd25hbWVzKHJlc3VsdGFkb3MpIDwtIGMoIlByZWNpc2nDs24gZGUgRW50cmVuYW1pZW50byIsIlByZXNjaXNpw7NuIGRlIFBydWViYSIpDQpyZXN1bHRhZG9zDQpgYGANCg0KDQpFbCBtb2RlbG8gc3ZtUmFkaWFsIHkgZWwgbW9kZWxvIHJmIChyYWluIGZvcmVzdCkgcHJlc2VudGFuIHNvYnJlYWp1c3RlIGVuIGxvcyByZXN1bHRhZG9zLkVuIGxvcyByZXN1bHRhZG9zIGVsIG1vZGVsbyBubmV0IGVzIGVsIG1lam9yIG1vZGVsbyBhIHV0aWxpemFyIGVuIGVzdG9zIGRhdG9zLg0KDQoNCg0KDQo=