Teoría

El paquete CARET (Classification And Regression Training) es un paquete integral con una amplia variedad de algoritmos para el aprendizaje automático .

Instalar paquetes y llamar librerías

#install.packages("caret") # algoriutmos de aprendizaje automático
library(caret)
## Loading required package: ggplot2
## Loading required package: lattice
#install.packages("ggplot2") # Gráficas
library(ggplot2)
#install.packages("lattice") # Crear gráficos 
library(lattice)
#install.packages("datasets") # Usar bases de datos precargadas
library(datasets)
#install.packages("DataExplorer") # Análisis descriptivo
library(DataExplorer)
#install.packages("readxl") # Leer archivos de Excel
library(readxl)

Crear la base de datos

df <- data.frame(read_excel("/Users/santiagojaramillo/Downloads/heart.xlsx"))
df$target <- as.factor(df$target)

Entender la base de datos

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   0:499  
##  1st Qu.:2.000   1:526  
##  Median :2.000          
##  Mean   :2.324          
##  3rd Qu.:3.000          
##  Max.   :3.000
str(df)
## 'data.frame':    1025 obs. of  14 variables:
##  $ age     : num  52 53 70 61 62 58 58 55 46 54 ...
##  $ sex     : num  1 1 1 1 0 0 1 1 1 1 ...
##  $ cp      : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ trestbps: num  125 140 145 148 138 100 114 160 120 122 ...
##  $ chol    : num  212 203 174 203 294 248 318 289 249 286 ...
##  $ fbs     : num  0 1 0 0 1 0 0 0 0 0 ...
##  $ restecg : num  1 0 1 1 1 0 2 0 0 0 ...
##  $ thalach : num  168 155 125 161 106 122 140 145 144 116 ...
##  $ exang   : num  0 1 1 0 0 0 0 1 0 1 ...
##  $ oldpeak : num  1 3.1 2.6 0 1.9 1 4.4 0.8 0.8 3.2 ...
##  $ slope   : num  2 0 0 2 1 1 0 1 2 1 ...
##  $ ca      : num  2 0 0 1 3 0 3 1 0 2 ...
##  $ thal    : num  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 ...
#create_report(df)
plot_missing(df)

plot_histogram(df)

plot_correlation(df)

NOTA: en modeloss de clasificación, la variable que queremos predecir debe tener formato de FACTOR

partir la base de datos

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

Distintos tipos de métodos para Modelar

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

  • SVM: Support Vector Machine o Máquina de Vectores de Soporte. Hay varios subtipos: Lineal (svmLinear), Radial (svmRadial), Polinómico(svmPoly), etc. *Árbol de decisión: rpart
  • Redes Neuronales: nnet
  • Random Forest o Bosques Aleatorios: rf

Modelo 1. SVM Lineal

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

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


# Matriz de confusión
# Es una tabla de evaluación que desglosa el rendimietno del modelo de clasificación

#Matriz de Confusión del Resultado de Entrenamiento 

mcre1 <- confusionMatrix(resultado_entrenamiento1, entrenamiento$target)
mcre1
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 301  37
##          1  99 384
##                                           
##                Accuracy : 0.8343          
##                  95% CI : (0.8071, 0.8592)
##     No Information Rate : 0.5128          
##     P-Value [Acc > NIR] : < 2.2e-16       
##                                           
##                   Kappa : 0.6672          
##                                           
##  Mcnemar's Test P-Value : 1.689e-07       
##                                           
##             Sensitivity : 0.7525          
##             Specificity : 0.9121          
##          Pos Pred Value : 0.8905          
##          Neg Pred Value : 0.7950          
##              Prevalence : 0.4872          
##          Detection Rate : 0.3666          
##    Detection Prevalence : 0.4117          
##       Balanced Accuracy : 0.8323          
##                                           
##        'Positive' Class : 0               
## 
#Matriz de confusión del Resultado de la Prueba
mcrp1 <- confusionMatrix (resultado_prueba1, prueba$target)
mcrp1
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction  0  1
##          0 78 10
##          1 21 95
##                                           
##                Accuracy : 0.848           
##                  95% CI : (0.7913, 0.8944)
##     No Information Rate : 0.5147          
##     P-Value [Acc > NIR] : < 2e-16         
##                                           
##                   Kappa : 0.6948          
##                                           
##  Mcnemar's Test P-Value : 0.07249         
##                                           
##             Sensitivity : 0.7879          
##             Specificity : 0.9048          
##          Pos Pred Value : 0.8864          
##          Neg Pred Value : 0.8190          
##              Prevalence : 0.4853          
##          Detection Rate : 0.3824          
##    Detection Prevalence : 0.4314          
##       Balanced Accuracy : 0.8463          
##                                           
##        'Positive' Class : 0               
## 

Modelo 2. SVM Radial

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

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


# Matriz de confusión
# Es una tabla de evaluación que desglosa el rendimietno del modelo de clasificación

#Matriz de Confusión del Resultado de Entrenamiento 

mcre2 <- confusionMatrix(resultado_entrenamiento2, entrenamiento$target)
mcre2
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 356  20
##          1  44 401
##                                           
##                Accuracy : 0.922           
##                  95% CI : (0.9015, 0.9395)
##     No Information Rate : 0.5128          
##     P-Value [Acc > NIR] : < 2e-16         
##                                           
##                   Kappa : 0.8438          
##                                           
##  Mcnemar's Test P-Value : 0.00404         
##                                           
##             Sensitivity : 0.8900          
##             Specificity : 0.9525          
##          Pos Pred Value : 0.9468          
##          Neg Pred Value : 0.9011          
##              Prevalence : 0.4872          
##          Detection Rate : 0.4336          
##    Detection Prevalence : 0.4580          
##       Balanced Accuracy : 0.9212          
##                                           
##        'Positive' Class : 0               
## 
#Matriz de confusión del Resultado de la Prueba
mcrp2 <- confusionMatrix (resultado_prueba2, prueba$target)
mcrp2
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction  0  1
##          0 90  7
##          1  9 98
##                                           
##                Accuracy : 0.9216          
##                  95% CI : (0.8758, 0.9545)
##     No Information Rate : 0.5147          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.8429          
##                                           
##  Mcnemar's Test P-Value : 0.8026          
##                                           
##             Sensitivity : 0.9091          
##             Specificity : 0.9333          
##          Pos Pred Value : 0.9278          
##          Neg Pred Value : 0.9159          
##              Prevalence : 0.4853          
##          Detection Rate : 0.4412          
##    Detection Prevalence : 0.4755          
##       Balanced Accuracy : 0.9212          
##                                           
##        'Positive' Class : 0               
## 

Modelo 3. SVM Polinómico

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

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


# Matriz de confusión
# Es una tabla de evaluación que desglosa el rendimietno del modelo de clasificación

#Matriz de Confusión del Resultado de Entrenamiento 

mcre3 <- confusionMatrix(resultado_entrenamiento3, entrenamiento$target)
mcre3
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 391   3
##          1   9 418
##                                           
##                Accuracy : 0.9854          
##                  95% CI : (0.9746, 0.9924)
##     No Information Rate : 0.5128          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.9707          
##                                           
##  Mcnemar's Test P-Value : 0.1489          
##                                           
##             Sensitivity : 0.9775          
##             Specificity : 0.9929          
##          Pos Pred Value : 0.9924          
##          Neg Pred Value : 0.9789          
##              Prevalence : 0.4872          
##          Detection Rate : 0.4762          
##    Detection Prevalence : 0.4799          
##       Balanced Accuracy : 0.9852          
##                                           
##        'Positive' Class : 0               
## 
#Matriz de confusión del Resultado de la Prueba
mcrp3 <- confusionMatrix (resultado_prueba3, prueba$target)
mcrp3
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0  96   3
##          1   3 102
##                                           
##                Accuracy : 0.9706          
##                  95% CI : (0.9371, 0.9891)
##     No Information Rate : 0.5147          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.9411          
##                                           
##  Mcnemar's Test P-Value : 1               
##                                           
##             Sensitivity : 0.9697          
##             Specificity : 0.9714          
##          Pos Pred Value : 0.9697          
##          Neg Pred Value : 0.9714          
##              Prevalence : 0.4853          
##          Detection Rate : 0.4706          
##    Detection Prevalence : 0.4853          
##       Balanced Accuracy : 0.9706          
##                                           
##        'Positive' Class : 0               
## 

Modelo 4. Árbol de decisión

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
# Es una tabla de evaluación que desglosa el rendimietno del modelo de clasificación

#Matriz de Confusión del Resultado de Entrenamiento 

mcre4 <- confusionMatrix(resultado_entrenamiento4, entrenamiento$target)
mcre4
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 361  23
##          1  39 398
##                                           
##                Accuracy : 0.9245          
##                  95% CI : (0.9042, 0.9416)
##     No Information Rate : 0.5128          
##     P-Value [Acc > NIR] : < 2e-16         
##                                           
##                   Kappa : 0.8487          
##                                           
##  Mcnemar's Test P-Value : 0.05678         
##                                           
##             Sensitivity : 0.9025          
##             Specificity : 0.9454          
##          Pos Pred Value : 0.9401          
##          Neg Pred Value : 0.9108          
##              Prevalence : 0.4872          
##          Detection Rate : 0.4397          
##    Detection Prevalence : 0.4677          
##       Balanced Accuracy : 0.9239          
##                                           
##        'Positive' Class : 0               
## 
#Matriz de confusión del Resultado de la Prueba
mcrp4 <- confusionMatrix (resultado_prueba4, prueba$target)
mcrp4
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction  0  1
##          0 82  7
##          1 17 98
##                                         
##                Accuracy : 0.8824        
##                  95% CI : (0.83, 0.9231)
##     No Information Rate : 0.5147        
##     P-Value [Acc > NIR] : < 2e-16       
##                                         
##                   Kappa : 0.7638        
##                                         
##  Mcnemar's Test P-Value : 0.06619       
##                                         
##             Sensitivity : 0.8283        
##             Specificity : 0.9333        
##          Pos Pred Value : 0.9213        
##          Neg Pred Value : 0.8522        
##              Prevalence : 0.4853        
##          Detection Rate : 0.4020        
##    Detection Prevalence : 0.4363        
##       Balanced Accuracy : 0.8808        
##                                         
##        'Positive' Class : 0             
## 

Modelo 5. Bosques Aleatorios

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

resultado_entrenamiento5 <- predict(modelo5, entrenamiento)
resultado_prueba5 <- predict(modelo5, prueba)


# Matriz de confusión
# Es una tabla de evaluación que desglosa el rendimietno del modelo de clasificación

#Matriz de Confusión del Resultado de Entrenamiento 

mcre5 <- confusionMatrix(resultado_entrenamiento5, entrenamiento$target)
mcre5
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 400   0
##          1   0 421
##                                      
##                Accuracy : 1          
##                  95% CI : (0.9955, 1)
##     No Information Rate : 0.5128     
##     P-Value [Acc > NIR] : < 2.2e-16  
##                                      
##                   Kappa : 1          
##                                      
##  Mcnemar's Test P-Value : NA         
##                                      
##             Sensitivity : 1.0000     
##             Specificity : 1.0000     
##          Pos Pred Value : 1.0000     
##          Neg Pred Value : 1.0000     
##              Prevalence : 0.4872     
##          Detection Rate : 0.4872     
##    Detection Prevalence : 0.4872     
##       Balanced Accuracy : 1.0000     
##                                      
##        'Positive' Class : 0          
## 
#Matriz de confusión del Resultado de la Prueba
mcrp5 <- confusionMatrix (resultado_prueba5, prueba$target)
mcrp5
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0  99   0
##          1   0 105
##                                      
##                Accuracy : 1          
##                  95% CI : (0.9821, 1)
##     No Information Rate : 0.5147     
##     P-Value [Acc > NIR] : < 2.2e-16  
##                                      
##                   Kappa : 1          
##                                      
##  Mcnemar's Test P-Value : NA         
##                                      
##             Sensitivity : 1.0000     
##             Specificity : 1.0000     
##          Pos Pred Value : 1.0000     
##          Neg Pred Value : 1.0000     
##              Prevalence : 0.4853     
##          Detection Rate : 0.4853     
##    Detection Prevalence : 0.4853     
##       Balanced Accuracy : 1.0000     
##                                      
##        'Positive' Class : 0          
## 

Modelo 6. Redes Neuronales

modelo6 <- train (target~., data=entrenamiento,
                  method="nnet", # Cambiar
                  preProcess = c("scale","center"),
                  trControl = trainControl(method="cv", number=10)
                  # Cambiar  
                  )
## # weights:  16
## initial  value 535.375236 
## iter  10 value 305.824212
## iter  20 value 275.855839
## iter  30 value 264.565475
## iter  40 value 258.976519
## iter  50 value 256.327139
## iter  60 value 250.205575
## iter  70 value 249.267138
## iter  80 value 235.514950
## final  value 234.620074 
## converged
## # weights:  46
## initial  value 528.694101 
## iter  10 value 260.313369
## iter  20 value 212.544446
## iter  30 value 203.186878
## iter  40 value 194.123780
## iter  50 value 184.425375
## iter  60 value 182.070930
## iter  70 value 182.064559
## final  value 182.064552 
## converged
## # weights:  76
## initial  value 575.590475 
## iter  10 value 242.612835
## iter  20 value 176.557309
## iter  30 value 118.018268
## iter  40 value 102.995754
## iter  50 value 93.799231
## iter  60 value 90.300023
## iter  70 value 89.622837
## iter  80 value 88.274726
## iter  90 value 84.823241
## iter 100 value 84.255918
## final  value 84.255918 
## stopped after 100 iterations
## # weights:  16
## initial  value 520.993824 
## iter  10 value 311.231466
## iter  20 value 273.050512
## iter  30 value 270.328982
## iter  40 value 269.928067
## iter  50 value 269.842192
## final  value 269.829269 
## converged
## # weights:  46
## initial  value 528.085888 
## iter  10 value 254.017819
## iter  20 value 230.433639
## iter  30 value 213.006060
## iter  40 value 200.024936
## iter  50 value 194.837339
## iter  60 value 193.958959
## iter  70 value 191.045989
## iter  80 value 189.173179
## iter  90 value 189.052634
## iter 100 value 189.041748
## final  value 189.041748 
## stopped after 100 iterations
## # weights:  76
## initial  value 668.381505 
## iter  10 value 277.367224
## iter  20 value 230.600874
## iter  30 value 201.758983
## iter  40 value 185.294345
## iter  50 value 169.188815
## iter  60 value 157.068340
## iter  70 value 148.655199
## iter  80 value 146.526722
## iter  90 value 145.138806
## iter 100 value 143.817384
## final  value 143.817384 
## stopped after 100 iterations
## # weights:  16
## initial  value 532.893863 
## iter  10 value 325.778152
## iter  20 value 265.787893
## iter  30 value 264.563899
## iter  40 value 264.512151
## iter  50 value 264.126920
## iter  60 value 263.513766
## iter  70 value 263.385091
## iter  80 value 263.381398
## iter  90 value 263.341664
## iter 100 value 263.309238
## final  value 263.309238 
## stopped after 100 iterations
## # weights:  46
## initial  value 517.389902 
## iter  10 value 228.723315
## iter  20 value 198.292421
## iter  30 value 172.278040
## iter  40 value 147.046437
## iter  50 value 137.988169
## iter  60 value 136.824516
## iter  70 value 136.580523
## iter  80 value 136.524577
## iter  90 value 136.462194
## iter 100 value 136.339876
## final  value 136.339876 
## stopped after 100 iterations
## # weights:  76
## initial  value 614.457467 
## iter  10 value 251.437132
## iter  20 value 191.377325
## iter  30 value 145.355880
## iter  40 value 127.651832
## iter  50 value 119.172995
## iter  60 value 117.334707
## iter  70 value 115.642958
## iter  80 value 115.237553
## iter  90 value 115.092696
## iter 100 value 114.975083
## final  value 114.975083 
## stopped after 100 iterations
## # weights:  16
## initial  value 508.742022 
## iter  10 value 299.156677
## iter  20 value 274.699351
## iter  30 value 263.576398
## iter  40 value 262.315740
## iter  50 value 260.859671
## iter  60 value 260.631404
## iter  70 value 260.597992
## iter  80 value 260.457191
## iter  90 value 260.365082
## iter 100 value 260.344572
## final  value 260.344572 
## stopped after 100 iterations
## # weights:  46
## initial  value 539.499371 
## iter  10 value 253.943077
## iter  20 value 230.397124
## iter  30 value 196.524749
## iter  40 value 180.563418
## iter  50 value 167.473582
## iter  60 value 161.591162
## iter  70 value 161.534234
## final  value 161.534146 
## converged
## # weights:  76
## initial  value 546.439235 
## iter  10 value 225.767357
## iter  20 value 133.137586
## iter  30 value 89.903977
## iter  40 value 78.954091
## iter  50 value 74.667182
## iter  60 value 72.031344
## iter  70 value 71.685510
## iter  80 value 71.614649
## iter  90 value 71.600919
## iter 100 value 71.600276
## final  value 71.600276 
## stopped after 100 iterations
## # weights:  16
## initial  value 511.644137 
## iter  10 value 297.200282
## iter  20 value 277.125896
## iter  30 value 270.116750
## iter  40 value 268.528921
## iter  50 value 268.176524
## final  value 268.069566 
## converged
## # weights:  46
## initial  value 554.859699 
## iter  10 value 268.435519
## iter  20 value 248.161698
## iter  30 value 230.647061
## iter  40 value 222.198185
## iter  50 value 213.983142
## iter  60 value 208.260555
## iter  70 value 196.270609
## iter  80 value 187.950809
## iter  90 value 187.643066
## iter 100 value 187.634050
## final  value 187.634050 
## stopped after 100 iterations
## # weights:  76
## initial  value 503.623932 
## iter  10 value 229.842390
## iter  20 value 195.817915
## iter  30 value 177.194543
## iter  40 value 158.229761
## iter  50 value 148.283311
## iter  60 value 146.060155
## iter  70 value 143.536210
## iter  80 value 142.586259
## iter  90 value 142.436477
## iter 100 value 142.369645
## final  value 142.369645 
## stopped after 100 iterations
## # weights:  16
## initial  value 522.254022 
## iter  10 value 303.644732
## iter  20 value 270.507537
## iter  30 value 264.640196
## iter  40 value 258.419303
## iter  50 value 254.200396
## iter  60 value 239.046202
## iter  70 value 238.602475
## iter  80 value 238.447121
## iter  90 value 238.216956
## iter 100 value 237.581761
## final  value 237.581761 
## stopped after 100 iterations
## # weights:  46
## initial  value 576.723361 
## iter  10 value 263.920686
## iter  20 value 231.012088
## iter  30 value 182.611609
## iter  40 value 139.954051
## iter  50 value 119.686484
## iter  60 value 105.976739
## iter  70 value 99.730298
## iter  80 value 99.452154
## iter  90 value 98.970999
## iter 100 value 98.756869
## final  value 98.756869 
## stopped after 100 iterations
## # weights:  76
## initial  value 495.172484 
## iter  10 value 229.005093
## iter  20 value 152.976637
## iter  30 value 127.519141
## iter  40 value 116.875869
## iter  50 value 101.899053
## iter  60 value 99.376819
## iter  70 value 98.995740
## iter  80 value 98.901507
## iter  90 value 98.829214
## iter 100 value 97.635963
## final  value 97.635963 
## stopped after 100 iterations
## # weights:  16
## initial  value 543.983251 
## iter  10 value 266.307470
## iter  20 value 251.096992
## iter  30 value 247.554051
## iter  40 value 234.484205
## iter  50 value 230.754282
## iter  60 value 225.256800
## final  value 225.243236 
## converged
## # weights:  46
## initial  value 551.132327 
## iter  10 value 230.455229
## iter  20 value 193.091097
## iter  30 value 158.807623
## iter  40 value 139.913530
## iter  50 value 132.903544
## iter  60 value 129.828096
## iter  70 value 128.848115
## iter  80 value 128.814064
## iter  90 value 128.812567
## iter 100 value 128.795992
## final  value 128.795992 
## stopped after 100 iterations
## # weights:  76
## initial  value 497.150525 
## iter  10 value 220.001885
## iter  20 value 148.901729
## iter  30 value 93.807773
## iter  40 value 82.308049
## iter  50 value 79.031398
## iter  60 value 78.737673
## iter  70 value 78.685377
## iter  80 value 78.345343
## iter  90 value 78.343616
## iter 100 value 78.342788
## final  value 78.342788 
## stopped after 100 iterations
## # weights:  16
## initial  value 551.109219 
## iter  10 value 256.656049
## iter  20 value 254.916228
## iter  30 value 253.888205
## iter  40 value 252.966331
## iter  50 value 252.958586
## final  value 252.957718 
## converged
## # weights:  46
## initial  value 557.933784 
## iter  10 value 250.075456
## iter  20 value 236.291551
## iter  30 value 207.122344
## iter  40 value 190.488446
## iter  50 value 183.259744
## iter  60 value 181.685441
## iter  70 value 179.618598
## iter  80 value 174.152349
## iter  90 value 172.236861
## iter 100 value 171.978530
## final  value 171.978530 
## stopped after 100 iterations
## # weights:  76
## initial  value 558.253557 
## iter  10 value 229.010836
## iter  20 value 183.145827
## iter  30 value 159.272031
## iter  40 value 138.235749
## iter  50 value 130.572151
## iter  60 value 127.974596
## iter  70 value 126.887230
## iter  80 value 126.285918
## iter  90 value 126.145426
## iter 100 value 126.129686
## final  value 126.129686 
## stopped after 100 iterations
## # weights:  16
## initial  value 519.911362 
## iter  10 value 270.862989
## iter  20 value 253.583385
## iter  30 value 246.678301
## iter  40 value 244.779128
## iter  50 value 243.958990
## iter  60 value 232.452805
## iter  70 value 231.058633
## iter  80 value 230.787072
## iter  90 value 230.729866
## iter 100 value 230.726790
## final  value 230.726790 
## stopped after 100 iterations
## # weights:  46
## initial  value 548.264527 
## iter  10 value 287.441599
## iter  20 value 240.448758
## iter  30 value 220.711799
## iter  40 value 205.236325
## iter  50 value 197.032393
## iter  60 value 195.265178
## iter  70 value 194.129565
## iter  80 value 189.243415
## iter  90 value 177.436328
## iter 100 value 172.336703
## final  value 172.336703 
## stopped after 100 iterations
## # weights:  76
## initial  value 506.974573 
## iter  10 value 229.957764
## iter  20 value 156.876308
## iter  30 value 113.321178
## iter  40 value 101.580209
## iter  50 value 93.495688
## iter  60 value 88.735879
## iter  70 value 85.174025
## iter  80 value 84.580013
## iter  90 value 84.410808
## iter 100 value 84.329884
## final  value 84.329884 
## stopped after 100 iterations
## # weights:  16
## initial  value 517.810707 
## iter  10 value 286.498535
## iter  20 value 265.184593
## iter  30 value 252.513047
## iter  40 value 243.847606
## iter  50 value 243.336418
## iter  60 value 243.236431
## iter  70 value 243.050582
## iter  80 value 242.911123
## iter  90 value 242.870507
## iter 100 value 242.585447
## final  value 242.585447 
## stopped after 100 iterations
## # weights:  46
## initial  value 518.066794 
## iter  10 value 247.661628
## iter  20 value 179.320064
## iter  30 value 159.709029
## iter  40 value 141.775506
## iter  50 value 130.351919
## iter  60 value 127.887500
## iter  70 value 127.488501
## iter  80 value 127.442684
## iter  90 value 127.406318
## iter 100 value 127.382185
## final  value 127.382185 
## stopped after 100 iterations
## # weights:  76
## initial  value 514.512405 
## iter  10 value 231.252810
## iter  20 value 152.475769
## iter  30 value 109.860155
## iter  40 value 99.859629
## iter  50 value 93.159592
## iter  60 value 89.766759
## iter  70 value 85.068763
## iter  80 value 83.520101
## iter  90 value 74.137482
## iter 100 value 72.640768
## final  value 72.640768 
## stopped after 100 iterations
## # weights:  16
## initial  value 511.395597 
## iter  10 value 446.841021
## iter  20 value 320.542883
## iter  30 value 281.654171
## iter  40 value 270.935623
## iter  50 value 269.896165
## final  value 269.896143 
## converged
## # weights:  46
## initial  value 526.582038 
## iter  10 value 301.121993
## iter  20 value 237.208033
## iter  30 value 212.150097
## iter  40 value 202.621236
## iter  50 value 196.875020
## iter  60 value 194.965604
## iter  70 value 193.852746
## iter  80 value 193.478780
## iter  90 value 193.474843
## final  value 193.474832 
## converged
## # weights:  76
## initial  value 539.799188 
## iter  10 value 244.861468
## iter  20 value 192.120278
## iter  30 value 164.693727
## iter  40 value 136.974046
## iter  50 value 123.492266
## iter  60 value 112.777359
## iter  70 value 110.031025
## iter  80 value 107.845151
## iter  90 value 107.459364
## iter 100 value 107.318149
## final  value 107.318149 
## stopped after 100 iterations
## # weights:  16
## initial  value 543.109625 
## iter  10 value 275.098512
## iter  20 value 263.572903
## iter  30 value 250.709981
## iter  40 value 248.482471
## iter  50 value 248.249032
## iter  60 value 248.233709
## iter  70 value 248.216920
## iter  80 value 248.212551
## iter  90 value 248.205407
## iter 100 value 248.190062
## final  value 248.190062 
## stopped after 100 iterations
## # weights:  46
## initial  value 605.733621 
## iter  10 value 257.894282
## iter  20 value 205.265255
## iter  30 value 187.948752
## iter  40 value 177.134181
## iter  50 value 169.369418
## iter  60 value 164.853547
## iter  70 value 163.477881
## iter  80 value 161.667428
## iter  90 value 160.243486
## iter 100 value 159.717375
## final  value 159.717375 
## stopped after 100 iterations
## # weights:  76
## initial  value 520.583193 
## iter  10 value 210.652458
## iter  20 value 154.622899
## iter  30 value 111.768034
## iter  40 value 96.057720
## iter  50 value 92.862665
## iter  60 value 89.143708
## iter  70 value 87.709337
## iter  80 value 87.040188
## iter  90 value 86.577386
## iter 100 value 86.494952
## final  value 86.494952 
## stopped after 100 iterations
## # weights:  16
## initial  value 523.017723 
## iter  10 value 347.680638
## iter  20 value 273.472666
## iter  30 value 263.048722
## iter  40 value 254.303613
## iter  50 value 254.057635
## iter  60 value 254.011453
## iter  70 value 253.980386
## iter  80 value 253.972343
## iter  90 value 253.958500
## iter 100 value 253.885848
## final  value 253.885848 
## stopped after 100 iterations
## # weights:  46
## initial  value 498.586989 
## iter  10 value 252.293352
## iter  20 value 196.833685
## iter  30 value 167.383720
## iter  40 value 140.714188
## iter  50 value 131.313426
## iter  60 value 120.912767
## iter  70 value 119.919892
## iter  80 value 119.882366
## iter  90 value 119.873919
## iter 100 value 119.822893
## final  value 119.822893 
## stopped after 100 iterations
## # weights:  76
## initial  value 517.401193 
## iter  10 value 236.841136
## iter  20 value 165.780608
## iter  30 value 115.725248
## iter  40 value 92.622357
## iter  50 value 86.162448
## iter  60 value 80.504955
## iter  70 value 80.036969
## iter  80 value 79.959614
## iter  90 value 79.950062
## final  value 79.949916 
## converged
## # weights:  16
## initial  value 531.934244 
## iter  10 value 300.129820
## iter  20 value 272.528729
## iter  30 value 270.453509
## iter  40 value 270.096244
## iter  50 value 270.084908
## final  value 270.084796 
## converged
## # weights:  46
## initial  value 534.710833 
## iter  10 value 282.031503
## iter  20 value 242.156205
## iter  30 value 224.192932
## iter  40 value 207.359477
## iter  50 value 202.482633
## iter  60 value 199.953820
## iter  70 value 199.392582
## iter  80 value 199.202224
## iter  90 value 199.137994
## iter 100 value 199.049727
## final  value 199.049727 
## stopped after 100 iterations
## # weights:  76
## initial  value 556.976522 
## iter  10 value 259.694096
## iter  20 value 205.288529
## iter  30 value 186.819642
## iter  40 value 176.442234
## iter  50 value 160.467869
## iter  60 value 150.152898
## iter  70 value 141.682056
## iter  80 value 137.467942
## iter  90 value 134.943365
## iter 100 value 133.645655
## final  value 133.645655 
## stopped after 100 iterations
## # weights:  16
## initial  value 510.094803 
## iter  10 value 284.115036
## iter  20 value 271.427917
## iter  30 value 265.706556
## iter  40 value 257.711802
## iter  50 value 257.088293
## iter  60 value 252.211848
## iter  70 value 252.150974
## iter  80 value 252.150591
## final  value 252.150588 
## converged
## # weights:  46
## initial  value 491.937270 
## iter  10 value 242.227363
## iter  20 value 208.549141
## iter  30 value 195.652552
## iter  40 value 182.871626
## iter  50 value 175.448909
## iter  60 value 173.546635
## iter  70 value 173.182389
## iter  80 value 172.773138
## iter  90 value 172.676052
## iter 100 value 172.621077
## final  value 172.621077 
## stopped after 100 iterations
## # weights:  76
## initial  value 514.613550 
## iter  10 value 210.035997
## iter  20 value 155.177688
## iter  30 value 117.952893
## iter  40 value 99.610856
## iter  50 value 91.124477
## iter  60 value 88.801651
## iter  70 value 88.594406
## iter  80 value 88.326394
## iter  90 value 88.195356
## iter 100 value 88.117892
## final  value 88.117892 
## stopped after 100 iterations
## # weights:  16
## initial  value 511.094900 
## iter  10 value 278.921706
## iter  20 value 270.382317
## iter  30 value 264.302293
## iter  40 value 264.032206
## iter  50 value 263.925229
## iter  60 value 263.798965
## iter  70 value 263.759804
## iter  80 value 263.748013
## iter  90 value 263.737232
## iter 100 value 263.706411
## final  value 263.706411 
## stopped after 100 iterations
## # weights:  46
## initial  value 518.840377 
## iter  10 value 250.330504
## iter  20 value 215.721146
## iter  30 value 189.461573
## iter  40 value 174.770913
## iter  50 value 172.474548
## iter  60 value 172.450197
## iter  70 value 172.252389
## iter  80 value 171.324949
## final  value 171.318463 
## converged
## # weights:  76
## initial  value 473.733547 
## iter  10 value 217.422109
## iter  20 value 160.153220
## iter  30 value 110.862053
## iter  40 value 94.930733
## iter  50 value 87.588181
## iter  60 value 84.861344
## iter  70 value 84.458088
## iter  80 value 84.339695
## iter  90 value 84.022084
## iter 100 value 82.561677
## final  value 82.561677 
## stopped after 100 iterations
## # weights:  16
## initial  value 527.978687 
## iter  10 value 288.484896
## iter  20 value 274.309893
## iter  30 value 272.720199
## iter  40 value 272.341925
## iter  50 value 271.779314
## iter  60 value 271.519021
## final  value 271.518801 
## converged
## # weights:  46
## initial  value 470.749471 
## iter  10 value 252.792891
## iter  20 value 225.994422
## iter  30 value 192.035171
## iter  40 value 173.245495
## iter  50 value 169.396690
## iter  60 value 168.501247
## iter  70 value 168.404344
## final  value 168.402135 
## converged
## # weights:  76
## initial  value 497.882547 
## iter  10 value 233.022178
## iter  20 value 186.818033
## iter  30 value 158.119216
## iter  40 value 144.313371
## iter  50 value 136.208245
## iter  60 value 130.267288
## iter  70 value 124.451595
## iter  80 value 123.373517
## iter  90 value 123.214233
## iter 100 value 123.017390
## final  value 123.017390 
## stopped after 100 iterations
## # weights:  16
## initial  value 540.225354 
## iter  10 value 387.006208
## iter  20 value 300.051158
## iter  30 value 273.532871
## iter  40 value 267.537290
## iter  50 value 256.835107
## iter  60 value 255.804647
## iter  70 value 255.489243
## iter  80 value 255.444370
## iter  90 value 255.412110
## iter 100 value 255.390512
## final  value 255.390512 
## stopped after 100 iterations
## # weights:  46
## initial  value 554.461926 
## iter  10 value 298.033243
## iter  20 value 236.930990
## iter  30 value 185.595255
## iter  40 value 158.199200
## iter  50 value 139.146678
## iter  60 value 126.226434
## iter  70 value 123.521613
## iter  80 value 122.928262
## iter  90 value 122.824691
## iter 100 value 122.752368
## final  value 122.752368 
## stopped after 100 iterations
## # weights:  76
## initial  value 567.635670 
## iter  10 value 249.879593
## iter  20 value 188.210739
## iter  30 value 137.647918
## iter  40 value 108.915952
## iter  50 value 93.482638
## iter  60 value 80.958353
## iter  70 value 76.084749
## iter  80 value 72.775458
## iter  90 value 71.548197
## iter 100 value 70.695446
## final  value 70.695446 
## stopped after 100 iterations
## # weights:  16
## initial  value 523.035040 
## iter  10 value 300.950896
## iter  20 value 257.426976
## iter  30 value 254.340051
## iter  40 value 251.799688
## iter  50 value 242.877368
## iter  60 value 241.549799
## iter  70 value 237.782144
## iter  80 value 237.767577
## iter  90 value 237.766281
## final  value 237.766277 
## converged
## # weights:  46
## initial  value 614.798795 
## iter  10 value 292.814662
## iter  20 value 223.012131
## iter  30 value 166.442784
## iter  40 value 146.482220
## iter  50 value 128.558347
## iter  60 value 124.087808
## iter  70 value 123.941028
## iter  80 value 123.698871
## iter  90 value 122.973863
## iter 100 value 122.530107
## final  value 122.530107 
## stopped after 100 iterations
## # weights:  76
## initial  value 529.591730 
## iter  10 value 223.356964
## iter  20 value 153.433093
## iter  30 value 118.660796
## iter  40 value 109.897025
## iter  50 value 106.825770
## iter  60 value 106.519549
## iter  70 value 106.485811
## iter  80 value 106.482529
## final  value 106.482516 
## converged
## # weights:  16
## initial  value 546.562483 
## iter  10 value 326.771874
## iter  20 value 268.831121
## iter  30 value 261.364486
## iter  40 value 260.770866
## iter  50 value 260.738110
## final  value 260.736974 
## converged
## # weights:  46
## initial  value 531.168903 
## iter  10 value 230.682406
## iter  20 value 213.753824
## iter  30 value 206.996853
## iter  40 value 206.277173
## iter  50 value 201.423312
## iter  60 value 196.647900
## iter  70 value 183.046088
## iter  80 value 180.633701
## iter  90 value 179.378367
## iter 100 value 179.355823
## final  value 179.355823 
## stopped after 100 iterations
## # weights:  76
## initial  value 502.069958 
## iter  10 value 253.598526
## iter  20 value 208.834666
## iter  30 value 186.102276
## iter  40 value 171.905609
## iter  50 value 165.317454
## iter  60 value 157.191715
## iter  70 value 150.027595
## iter  80 value 142.183158
## iter  90 value 137.763490
## iter 100 value 135.344942
## final  value 135.344942 
## stopped after 100 iterations
## # weights:  16
## initial  value 526.185610 
## iter  10 value 338.341160
## iter  20 value 258.918740
## iter  30 value 254.409150
## iter  40 value 254.270189
## iter  50 value 254.150857
## iter  60 value 253.869504
## iter  70 value 253.850263
## final  value 253.850255 
## converged
## # weights:  46
## initial  value 564.956355 
## iter  10 value 250.683051
## iter  20 value 227.706155
## iter  30 value 182.973563
## iter  40 value 168.133176
## iter  50 value 157.117169
## iter  60 value 155.275165
## iter  70 value 154.311571
## iter  80 value 154.062051
## iter  90 value 154.034152
## iter 100 value 154.015949
## final  value 154.015949 
## stopped after 100 iterations
## # weights:  76
## initial  value 598.798103 
## iter  10 value 198.462887
## iter  20 value 127.814362
## iter  30 value 105.168907
## iter  40 value 93.118363
## iter  50 value 82.808987
## iter  60 value 73.669620
## iter  70 value 67.025718
## iter  80 value 65.980641
## iter  90 value 65.635539
## iter 100 value 65.462022
## final  value 65.462022 
## stopped after 100 iterations
## # weights:  16
## initial  value 515.909807 
## iter  10 value 336.748041
## iter  20 value 271.302669
## iter  30 value 257.310764
## iter  40 value 253.794526
## iter  50 value 243.135297
## iter  60 value 243.007735
## final  value 243.007550 
## converged
## # weights:  46
## initial  value 722.656742 
## iter  10 value 296.297709
## iter  20 value 208.477379
## iter  30 value 185.408483
## iter  40 value 174.068879
## iter  50 value 167.030303
## iter  60 value 165.581857
## iter  70 value 165.369973
## iter  80 value 165.361170
## iter  90 value 165.359073
## final  value 165.357751 
## converged
## # weights:  76
## initial  value 574.558178 
## iter  10 value 215.245786
## iter  20 value 135.471371
## iter  30 value 84.244945
## iter  40 value 56.425682
## iter  50 value 49.320981
## iter  60 value 48.428670
## iter  70 value 48.273637
## iter  80 value 48.080304
## iter  90 value 48.002889
## iter 100 value 47.869000
## final  value 47.869000 
## stopped after 100 iterations
## # weights:  16
## initial  value 531.546927 
## iter  10 value 293.551105
## iter  20 value 268.446471
## iter  30 value 264.401798
## iter  40 value 264.255169
## iter  40 value 264.255169
## iter  40 value 264.255169
## final  value 264.255169 
## converged
## # weights:  46
## initial  value 546.985197 
## iter  10 value 285.770180
## iter  20 value 241.627174
## iter  30 value 231.676044
## iter  40 value 215.414790
## iter  50 value 213.031955
## iter  60 value 212.831718
## iter  70 value 212.798028
## final  value 212.797977 
## converged
## # weights:  76
## initial  value 633.219117 
## iter  10 value 276.471692
## iter  20 value 213.389886
## iter  30 value 172.677121
## iter  40 value 159.315981
## iter  50 value 151.411031
## iter  60 value 143.564425
## iter  70 value 140.400166
## iter  80 value 134.968969
## iter  90 value 130.429502
## iter 100 value 128.768656
## final  value 128.768656 
## stopped after 100 iterations
## # weights:  16
## initial  value 513.267829 
## iter  10 value 269.916870
## iter  20 value 251.654118
## iter  30 value 245.875940
## iter  40 value 237.191354
## iter  50 value 236.806681
## iter  60 value 235.799266
## final  value 235.789689 
## converged
## # weights:  46
## initial  value 514.903478 
## iter  10 value 250.094174
## iter  20 value 211.799806
## iter  30 value 178.580042
## iter  40 value 154.574752
## iter  50 value 141.699527
## iter  60 value 140.523283
## iter  70 value 138.046916
## iter  80 value 137.231479
## iter  90 value 136.999819
## iter 100 value 136.935396
## final  value 136.935396 
## stopped after 100 iterations
## # weights:  76
## initial  value 576.625775 
## iter  10 value 215.212770
## iter  20 value 127.377889
## iter  30 value 96.553478
## iter  40 value 88.971853
## iter  50 value 86.644144
## iter  60 value 86.165898
## iter  70 value 84.372637
## iter  80 value 84.094609
## iter  90 value 83.884871
## iter 100 value 80.598906
## final  value 80.598906 
## stopped after 100 iterations
## # weights:  16
## initial  value 577.633372 
## iter  10 value 351.606547
## iter  20 value 269.882356
## iter  30 value 262.157503
## iter  40 value 259.048493
## iter  50 value 258.271640
## iter  60 value 257.055492
## iter  70 value 256.863479
## iter  80 value 256.854441
## iter  90 value 256.827023
## iter 100 value 256.736435
## final  value 256.736435 
## stopped after 100 iterations
## # weights:  46
## initial  value 540.202959 
## iter  10 value 282.815917
## iter  20 value 250.195443
## iter  30 value 223.346779
## iter  40 value 203.546374
## iter  50 value 198.014652
## iter  60 value 197.834548
## final  value 197.833585 
## converged
## # weights:  76
## initial  value 502.147524 
## iter  10 value 225.613166
## iter  20 value 160.224773
## iter  30 value 109.191275
## iter  40 value 89.642186
## iter  50 value 85.583140
## iter  60 value 83.541528
## iter  70 value 83.204470
## iter  80 value 83.186055
## iter  90 value 83.185722
## iter  90 value 83.185721
## iter  90 value 83.185721
## final  value 83.185721 
## converged
## # weights:  16
## initial  value 515.619841 
## iter  10 value 307.440000
## iter  20 value 270.166862
## iter  30 value 266.432738
## iter  40 value 266.355067
## iter  50 value 266.350435
## final  value 266.349214 
## converged
## # weights:  46
## initial  value 506.548029 
## iter  10 value 267.381687
## iter  20 value 236.902719
## iter  30 value 214.778785
## iter  40 value 206.490210
## iter  50 value 203.718473
## iter  60 value 202.664116
## iter  70 value 199.247954
## iter  80 value 198.681249
## iter  90 value 198.678126
## iter  90 value 198.678125
## iter  90 value 198.678125
## final  value 198.678125 
## converged
## # weights:  76
## initial  value 536.112769 
## iter  10 value 246.370681
## iter  20 value 192.658794
## iter  30 value 174.810356
## iter  40 value 164.734912
## iter  50 value 158.022772
## iter  60 value 153.885966
## iter  70 value 148.763402
## iter  80 value 136.501431
## iter  90 value 130.561813
## iter 100 value 127.847298
## final  value 127.847298 
## stopped after 100 iterations
## # weights:  16
## initial  value 566.733019 
## iter  10 value 306.712026
## iter  20 value 267.839969
## iter  30 value 259.580414
## iter  40 value 258.255207
## iter  50 value 257.913203
## iter  60 value 257.093078
## iter  70 value 256.964413
## iter  80 value 256.942466
## iter  90 value 256.877190
## iter 100 value 256.841597
## final  value 256.841597 
## stopped after 100 iterations
## # weights:  46
## initial  value 624.216851 
## iter  10 value 245.306959
## iter  20 value 206.828887
## iter  30 value 173.884617
## iter  40 value 161.746294
## iter  50 value 155.832567
## iter  60 value 149.577969
## iter  70 value 143.174982
## iter  80 value 141.646090
## iter  90 value 141.483794
## iter 100 value 138.275734
## final  value 138.275734 
## stopped after 100 iterations
## # weights:  76
## initial  value 518.762469 
## iter  10 value 257.550158
## iter  20 value 202.565643
## iter  30 value 149.256946
## iter  40 value 113.373905
## iter  50 value 98.801823
## iter  60 value 82.174152
## iter  70 value 78.400378
## iter  80 value 77.373371
## iter  90 value 76.998840
## iter 100 value 76.378277
## final  value 76.378277 
## stopped after 100 iterations
## # weights:  16
## initial  value 559.096742 
## iter  10 value 369.800126
## iter  20 value 344.783147
## iter  30 value 337.383639
## iter  40 value 332.522251
## iter  50 value 331.664606
## iter  60 value 327.847992
## iter  70 value 327.803363
## final  value 327.803237 
## converged
## # weights:  46
## initial  value 543.850931 
## iter  10 value 244.529590
## iter  20 value 204.084185
## iter  30 value 173.249662
## iter  40 value 160.002745
## iter  50 value 143.125825
## iter  60 value 142.284238
## iter  70 value 142.233539
## final  value 142.232552 
## converged
## # weights:  76
## initial  value 502.556393 
## iter  10 value 229.147717
## iter  20 value 147.499287
## iter  30 value 110.024520
## iter  40 value 99.807889
## iter  50 value 92.752324
## iter  60 value 89.974555
## iter  70 value 89.572409
## iter  80 value 89.470780
## iter  90 value 89.352961
## iter 100 value 89.259769
## final  value 89.259769 
## stopped after 100 iterations
## # weights:  16
## initial  value 518.069970 
## iter  10 value 286.442530
## iter  20 value 274.404217
## iter  30 value 269.219792
## iter  40 value 268.819955
## iter  50 value 268.716098
## final  value 268.703625 
## converged
## # weights:  46
## initial  value 582.009179 
## iter  10 value 270.861422
## iter  20 value 232.234958
## iter  30 value 217.742956
## iter  40 value 214.920260
## iter  50 value 214.367571
## iter  60 value 214.231415
## iter  70 value 210.620447
## iter  80 value 200.333517
## iter  90 value 197.308703
## iter 100 value 196.606986
## final  value 196.606986 
## stopped after 100 iterations
## # weights:  76
## initial  value 530.932300 
## iter  10 value 243.951265
## iter  20 value 196.230751
## iter  30 value 177.180549
## iter  40 value 159.642547
## iter  50 value 140.553457
## iter  60 value 132.618413
## iter  70 value 129.326546
## iter  80 value 124.452777
## iter  90 value 120.765627
## iter 100 value 120.232789
## final  value 120.232789 
## stopped after 100 iterations
## # weights:  16
## initial  value 513.746806 
## iter  10 value 268.924104
## iter  20 value 264.275618
## iter  30 value 261.729953
## iter  40 value 261.362500
## iter  50 value 261.279036
## iter  60 value 261.043895
## iter  70 value 260.962341
## iter  80 value 260.955843
## iter  90 value 260.943382
## iter 100 value 260.930525
## final  value 260.930525 
## stopped after 100 iterations
## # weights:  46
## initial  value 524.882824 
## iter  10 value 241.721132
## iter  20 value 216.918797
## iter  30 value 186.758670
## iter  40 value 166.535187
## iter  50 value 165.758067
## iter  60 value 165.601208
## iter  70 value 165.455919
## iter  80 value 165.296831
## iter  90 value 164.856070
## iter 100 value 164.750469
## final  value 164.750469 
## stopped after 100 iterations
## # weights:  76
## initial  value 550.298627 
## iter  10 value 263.163366
## iter  20 value 192.286713
## iter  30 value 112.433371
## iter  40 value 87.708667
## iter  50 value 82.130654
## iter  60 value 78.878375
## iter  70 value 76.451216
## iter  80 value 75.215191
## iter  90 value 73.980541
## iter 100 value 73.200062
## final  value 73.200062 
## stopped after 100 iterations
## # weights:  76
## initial  value 562.653156 
## iter  10 value 250.264508
## iter  20 value 206.842339
## iter  30 value 177.396601
## iter  40 value 152.857608
## iter  50 value 143.663315
## iter  60 value 140.198496
## iter  70 value 138.726731
## iter  80 value 138.234294
## iter  90 value 138.060163
## iter 100 value 138.051778
## final  value 138.051778 
## stopped after 100 iterations
resultado_entrenamiento6 <- predict(modelo6, entrenamiento)
resultado_prueba6 <- predict(modelo6, prueba)


# Matriz de confusión
# Es una tabla de evaluación que desglosa el rendimietno del modelo de clasificación

#Matriz de Confusión del Resultado de Entrenamiento 

mcre6 <- confusionMatrix(resultado_entrenamiento6, entrenamiento$target)
mcre6
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction   0   1
##          0 396   8
##          1   4 413
##                                           
##                Accuracy : 0.9854          
##                  95% CI : (0.9746, 0.9924)
##     No Information Rate : 0.5128          
##     P-Value [Acc > NIR] : <2e-16          
##                                           
##                   Kappa : 0.9708          
##                                           
##  Mcnemar's Test P-Value : 0.3865          
##                                           
##             Sensitivity : 0.9900          
##             Specificity : 0.9810          
##          Pos Pred Value : 0.9802          
##          Neg Pred Value : 0.9904          
##              Prevalence : 0.4872          
##          Detection Rate : 0.4823          
##    Detection Prevalence : 0.4921          
##       Balanced Accuracy : 0.9855          
##                                           
##        'Positive' Class : 0               
## 
#Matriz de confusión del Resultado de la Prueba
mcrp6 <- confusionMatrix (resultado_prueba6, prueba$target)
mcrp6
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction  0  1
##          0 99  7
##          1  0 98
##                                           
##                Accuracy : 0.9657          
##                  95% CI : (0.9306, 0.9861)
##     No Information Rate : 0.5147          
##     P-Value [Acc > NIR] : < 2e-16         
##                                           
##                   Kappa : 0.9315          
##                                           
##  Mcnemar's Test P-Value : 0.02334         
##                                           
##             Sensitivity : 1.0000          
##             Specificity : 0.9333          
##          Pos Pred Value : 0.9340          
##          Neg Pred Value : 1.0000          
##              Prevalence : 0.4853          
##          Detection Rate : 0.4853          
##    Detection Prevalence : 0.5196          
##       Balanced Accuracy : 0.9667          
##                                           
##        'Positive' Class : 0               
## 

Tabla de resultados

resultados <- data.frame(
  svmLinear = unname(c(mcre1$overall["Accuracy"], mcrp1$overall["Accuracy"])),
  svmRadial = unname(c(mcre2$overall["Accuracy"], mcrp2$overall["Accuracy"])),
  svmPoly   = unname(c(mcre3$overall["Accuracy"], mcrp3$overall["Accuracy"])),
  rpart     = unname(c(mcre4$overall["Accuracy"], mcrp4$overall["Accuracy"])),
  rf        = unname(c(mcre5$overall["Accuracy"], mcrp5$overall["Accuracy"])),
  nnet      = unname(c(mcre6$overall["Accuracy"], mcrp6$overall["Accuracy"]))
)
rownames(resultados) <- c("Exactitud del Entrenamiento", "Exactitud de la Prueba")
resultados
##                             svmLinear svmRadial   svmPoly     rpart rf
## Exactitud del Entrenamiento 0.8343484 0.9220463 0.9853837 0.9244823  1
## Exactitud de la Prueba      0.8480392 0.9215686 0.9705882 0.8823529  1
##                                  nnet
## Exactitud del Entrenamiento 0.9853837
## Exactitud de la Prueba      0.9656863

Conclusión

En conclusión, el modelo de Bosques Aleatorios es el recomendado para la clasificación de pacientes con enfermedad cardiaca.