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") # Algoritmos de aprendizaje automático
library(caret)
# 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("kernlab")
library(kernlab)
# install.packages("randomForest")
library(randomForest)

Instalar paquetes y llamar librerías

df <- data.frame(iris)

Instalar paquetes y llamar librerías

summary(df)
##   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##        Species  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 
str(df)
## 'data.frame':    150 obs. of  5 variables:
##  $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
# create_report(df) # DataExplorer
plot_missing(df)

plot_histogram(df)

plot_correlation(df)

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

Partir la base de datos

# Normalmente 80-20 o 70-30
set.seed(123) # Números aleatorios
renglones_entrenamiento <- createDataPartition(df$Species, 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:

Distintos tipos de Métodos para Modelar

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

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

# Matriz de Confusión
# Es una tabla la evaluación que desglosa el rendimiento del modelo de clasificación

# Matriz de Confusión del Resultado de Entrenamiento
mcre1 <- confusionMatrix(resultado_entrenamiento, entrenamiento$Species)
mcre1
## Confusion Matrix and Statistics
## 
##             Reference
## Prediction   setosa versicolor virginica
##   setosa         40          0         0
##   versicolor      0         39         0
##   virginica       0          1        40
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9917          
##                  95% CI : (0.9544, 0.9998)
##     No Information Rate : 0.3333          
##     P-Value [Acc > NIR] : < 2.2e-16       
##                                           
##                   Kappa : 0.9875          
##                                           
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: setosa Class: versicolor Class: virginica
## Sensitivity                 1.0000            0.9750           1.0000
## Specificity                 1.0000            1.0000           0.9875
## Pos Pred Value              1.0000            1.0000           0.9756
## Neg Pred Value              1.0000            0.9877           1.0000
## Prevalence                  0.3333            0.3333           0.3333
## Detection Rate              0.3333            0.3250           0.3333
## Detection Prevalence        0.3333            0.3250           0.3417
## Balanced Accuracy           1.0000            0.9875           0.9938
# Matriz de Confusión del Resultado de la Prueba
mcrp1 <- confusionMatrix(resultado_prueba1, prueba$Species)
mcrp1
## Confusion Matrix and Statistics
## 
##             Reference
## Prediction   setosa versicolor virginica
##   setosa         10          0         0
##   versicolor      0         10         1
##   virginica       0          0         9
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9667          
##                  95% CI : (0.8278, 0.9992)
##     No Information Rate : 0.3333          
##     P-Value [Acc > NIR] : 2.963e-13       
##                                           
##                   Kappa : 0.95            
##                                           
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: setosa Class: versicolor Class: virginica
## Sensitivity                 1.0000            1.0000           0.9000
## Specificity                 1.0000            0.9500           1.0000
## Pos Pred Value              1.0000            0.9091           1.0000
## Neg Pred Value              1.0000            1.0000           0.9524
## Prevalence                  0.3333            0.3333           0.3333
## Detection Rate              0.3333            0.3333           0.3000
## Detection Prevalence        0.3333            0.3667           0.3000
## Balanced Accuracy           1.0000            0.9750           0.9500

Modelo 2: SVM Radial

modelo2 <- train(Species ~., data=entrenamiento, 
                 method="svmLinear", # 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 la evaluación que desglosa el rendimiento del modelo de clasificación

# Matriz de Confusión del Resultado de Entrenamiento
mcre2 <- confusionMatrix(resultado_entrenamiento2, entrenamiento$Species)
mcre2
## Confusion Matrix and Statistics
## 
##             Reference
## Prediction   setosa versicolor virginica
##   setosa         40          0         0
##   versicolor      0         39         0
##   virginica       0          1        40
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9917          
##                  95% CI : (0.9544, 0.9998)
##     No Information Rate : 0.3333          
##     P-Value [Acc > NIR] : < 2.2e-16       
##                                           
##                   Kappa : 0.9875          
##                                           
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: setosa Class: versicolor Class: virginica
## Sensitivity                 1.0000            0.9750           1.0000
## Specificity                 1.0000            1.0000           0.9875
## Pos Pred Value              1.0000            1.0000           0.9756
## Neg Pred Value              1.0000            0.9877           1.0000
## Prevalence                  0.3333            0.3333           0.3333
## Detection Rate              0.3333            0.3250           0.3333
## Detection Prevalence        0.3333            0.3250           0.3417
## Balanced Accuracy           1.0000            0.9875           0.9938
# Matriz de Confusión del Resultado de la Prueba
mcrp2 <- confusionMatrix(resultado_prueba2, prueba$Species)
mcrp2
## Confusion Matrix and Statistics
## 
##             Reference
## Prediction   setosa versicolor virginica
##   setosa         10          0         0
##   versicolor      0         10         1
##   virginica       0          0         9
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9667          
##                  95% CI : (0.8278, 0.9992)
##     No Information Rate : 0.3333          
##     P-Value [Acc > NIR] : 2.963e-13       
##                                           
##                   Kappa : 0.95            
##                                           
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: setosa Class: versicolor Class: virginica
## Sensitivity                 1.0000            1.0000           0.9000
## Specificity                 1.0000            0.9500           1.0000
## Pos Pred Value              1.0000            0.9091           1.0000
## Neg Pred Value              1.0000            1.0000           0.9524
## Prevalence                  0.3333            0.3333           0.3333
## Detection Rate              0.3333            0.3333           0.3000
## Detection Prevalence        0.3333            0.3667           0.3000
## Balanced Accuracy           1.0000            0.9750           0.9500

Modelo 3: SVM Polinómico

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

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

# Matriz de Confusión
# Es una tabla la evaluación que desglosa el rendimiento del modelo de clasificación

# Matriz de Confusión del Resultado de Entrenamiento
mcre3 <- confusionMatrix(resultado_entrenamiento3, entrenamiento$Species)
mcre3
## Confusion Matrix and Statistics
## 
##             Reference
## Prediction   setosa versicolor virginica
##   setosa         40          0         0
##   versicolor      0         40         4
##   virginica       0          0        36
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9667          
##                  95% CI : (0.9169, 0.9908)
##     No Information Rate : 0.3333          
##     P-Value [Acc > NIR] : < 2.2e-16       
##                                           
##                   Kappa : 0.95            
##                                           
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: setosa Class: versicolor Class: virginica
## Sensitivity                 1.0000            1.0000           0.9000
## Specificity                 1.0000            0.9500           1.0000
## Pos Pred Value              1.0000            0.9091           1.0000
## Neg Pred Value              1.0000            1.0000           0.9524
## Prevalence                  0.3333            0.3333           0.3333
## Detection Rate              0.3333            0.3333           0.3000
## Detection Prevalence        0.3333            0.3667           0.3000
## Balanced Accuracy           1.0000            0.9750           0.9500
# Matriz de Confusión del Resultado de la Prueba
mcrp3 <- confusionMatrix(resultado_prueba3, prueba$Species)
mcrp3
## Confusion Matrix and Statistics
## 
##             Reference
## Prediction   setosa versicolor virginica
##   setosa         10          0         0
##   versicolor      0         10         2
##   virginica       0          0         8
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9333          
##                  95% CI : (0.7793, 0.9918)
##     No Information Rate : 0.3333          
##     P-Value [Acc > NIR] : 8.747e-12       
##                                           
##                   Kappa : 0.9             
##                                           
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: setosa Class: versicolor Class: virginica
## Sensitivity                 1.0000            1.0000           0.8000
## Specificity                 1.0000            0.9000           1.0000
## Pos Pred Value              1.0000            0.8333           1.0000
## Neg Pred Value              1.0000            1.0000           0.9091
## Prevalence                  0.3333            0.3333           0.3333
## Detection Rate              0.3333            0.3333           0.2667
## Detection Prevalence        0.3333            0.4000           0.2667
## Balanced Accuracy           1.0000            0.9500           0.9000

Modelo 4: Árbol de Decisión

modelo4 <- train(Species ~., 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 la evaluación que desglosa el rendimiento del modelo de clasificación

# Matriz de Confusión del Resultado de Entrenamiento
mcre4 <- confusionMatrix(resultado_entrenamiento4, entrenamiento$Species)
mcre4
## Confusion Matrix and Statistics
## 
##             Reference
## Prediction   setosa versicolor virginica
##   setosa         40          0         0
##   versicolor      0         39         3
##   virginica       0          1        37
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9667          
##                  95% CI : (0.9169, 0.9908)
##     No Information Rate : 0.3333          
##     P-Value [Acc > NIR] : < 2.2e-16       
##                                           
##                   Kappa : 0.95            
##                                           
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: setosa Class: versicolor Class: virginica
## Sensitivity                 1.0000            0.9750           0.9250
## Specificity                 1.0000            0.9625           0.9875
## Pos Pred Value              1.0000            0.9286           0.9737
## Neg Pred Value              1.0000            0.9872           0.9634
## Prevalence                  0.3333            0.3333           0.3333
## Detection Rate              0.3333            0.3250           0.3083
## Detection Prevalence        0.3333            0.3500           0.3167
## Balanced Accuracy           1.0000            0.9688           0.9563
# Matriz de Confusión del Resultado de la Prueba
mcrp4 <- confusionMatrix(resultado_prueba4, prueba$Species)
mcrp4
## Confusion Matrix and Statistics
## 
##             Reference
## Prediction   setosa versicolor virginica
##   setosa         10          0         0
##   versicolor      0         10         2
##   virginica       0          0         8
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9333          
##                  95% CI : (0.7793, 0.9918)
##     No Information Rate : 0.3333          
##     P-Value [Acc > NIR] : 8.747e-12       
##                                           
##                   Kappa : 0.9             
##                                           
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: setosa Class: versicolor Class: virginica
## Sensitivity                 1.0000            1.0000           0.8000
## Specificity                 1.0000            0.9000           1.0000
## Pos Pred Value              1.0000            0.8333           1.0000
## Neg Pred Value              1.0000            1.0000           0.9091
## Prevalence                  0.3333            0.3333           0.3333
## Detection Rate              0.3333            0.3333           0.2667
## Detection Prevalence        0.3333            0.4000           0.2667
## Balanced Accuracy           1.0000            0.9500           0.9000

Modelo 5: Bosques Aleatorios

modelo5 <- train(Species ~., data=entrenamiento, 
                 method="rf", # Cambiar
                 preProcess = c("scale", "center"),
                 trControl = trainControl(method = "cv", number = 10),
                 tuneGrid = expand.grid(mtry=c(2,4,6)) # Cambiar
                 )
## Warning in randomForest.default(x, y, mtry = param$mtry, ...): invalid mtry:
## reset to within valid range
## Warning in randomForest.default(x, y, mtry = param$mtry, ...): invalid mtry:
## reset to within valid range
## Warning in randomForest.default(x, y, mtry = param$mtry, ...): invalid mtry:
## reset to within valid range
## Warning in randomForest.default(x, y, mtry = param$mtry, ...): invalid mtry:
## reset to within valid range
## Warning in randomForest.default(x, y, mtry = param$mtry, ...): invalid mtry:
## reset to within valid range
## Warning in randomForest.default(x, y, mtry = param$mtry, ...): invalid mtry:
## reset to within valid range
## Warning in randomForest.default(x, y, mtry = param$mtry, ...): invalid mtry:
## reset to within valid range
## Warning in randomForest.default(x, y, mtry = param$mtry, ...): invalid mtry:
## reset to within valid range
## Warning in randomForest.default(x, y, mtry = param$mtry, ...): invalid mtry:
## reset to within valid range
## Warning in randomForest.default(x, y, mtry = param$mtry, ...): invalid mtry:
## reset to within valid range
## Warning in randomForest.default(x, y, mtry = param$mtry, ...): invalid mtry:
## reset to within valid range
resultado_entrenamiento5 <- predict(modelo5,entrenamiento)
resultado_prueba5 <- predict(modelo5,prueba)

# Matriz de Confusión
# Es una tabla la evaluación que desglosa el rendimiento del modelo de clasificación

# Matriz de Confusión del Resultado de Entrenamiento
mcre5 <- confusionMatrix(resultado_entrenamiento5, entrenamiento$Species)
mcre5
## Confusion Matrix and Statistics
## 
##             Reference
## Prediction   setosa versicolor virginica
##   setosa         40          0         0
##   versicolor      0         40         0
##   virginica       0          0        40
## 
## Overall Statistics
##                                      
##                Accuracy : 1          
##                  95% CI : (0.9697, 1)
##     No Information Rate : 0.3333     
##     P-Value [Acc > NIR] : < 2.2e-16  
##                                      
##                   Kappa : 1          
##                                      
##  Mcnemar's Test P-Value : NA         
## 
## Statistics by Class:
## 
##                      Class: setosa Class: versicolor Class: virginica
## Sensitivity                 1.0000            1.0000           1.0000
## Specificity                 1.0000            1.0000           1.0000
## Pos Pred Value              1.0000            1.0000           1.0000
## Neg Pred Value              1.0000            1.0000           1.0000
## Prevalence                  0.3333            0.3333           0.3333
## Detection Rate              0.3333            0.3333           0.3333
## Detection Prevalence        0.3333            0.3333           0.3333
## Balanced Accuracy           1.0000            1.0000           1.0000
# Matriz de Confusión del Resultado de la Prueba
mcrp5 <- confusionMatrix(resultado_prueba5, prueba$Species)
mcrp5
## Confusion Matrix and Statistics
## 
##             Reference
## Prediction   setosa versicolor virginica
##   setosa         10          0         0
##   versicolor      0         10         2
##   virginica       0          0         8
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9333          
##                  95% CI : (0.7793, 0.9918)
##     No Information Rate : 0.3333          
##     P-Value [Acc > NIR] : 8.747e-12       
##                                           
##                   Kappa : 0.9             
##                                           
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: setosa Class: versicolor Class: virginica
## Sensitivity                 1.0000            1.0000           0.8000
## Specificity                 1.0000            0.9000           1.0000
## Pos Pred Value              1.0000            0.8333           1.0000
## Neg Pred Value              1.0000            1.0000           0.9091
## Prevalence                  0.3333            0.3333           0.3333
## Detection Rate              0.3333            0.3333           0.2667
## Detection Prevalence        0.3333            0.4000           0.2667
## Balanced Accuracy           1.0000            0.9500           0.9000

Modelo 6: Redes Neuronales

modelo6 <- train(Species ~., data=entrenamiento, 
                 method="nnet", # Cambiar
                 preProcess = c("scale", "center"),
                 trControl = trainControl(method = "cv", number = 10)
                 )
## # weights:  11
## initial  value 134.741458 
## iter  10 value 49.284069
## iter  20 value 48.495017
## iter  30 value 48.492604
## iter  40 value 48.492075
## final  value 48.492072 
## converged
## # weights:  27
## initial  value 126.221689 
## iter  10 value 4.547404
## iter  20 value 0.977822
## iter  30 value 0.014451
## iter  40 value 0.008599
## iter  50 value 0.000132
## iter  50 value 0.000066
## iter  50 value 0.000063
## final  value 0.000063 
## converged
## # weights:  43
## initial  value 155.491532 
## iter  10 value 8.333316
## iter  20 value 1.218062
## iter  30 value 0.001281
## final  value 0.000083 
## converged
## # weights:  11
## initial  value 123.442481 
## iter  10 value 50.736147
## iter  20 value 43.559744
## iter  30 value 43.515356
## final  value 43.515002 
## converged
## # weights:  27
## initial  value 140.729460 
## iter  10 value 25.173956
## iter  20 value 19.729469
## iter  30 value 19.675760
## iter  40 value 19.671756
## iter  40 value 19.671756
## iter  40 value 19.671756
## final  value 19.671756 
## converged
## # weights:  43
## initial  value 141.546825 
## iter  10 value 28.709932
## iter  20 value 18.408233
## iter  30 value 17.839276
## iter  40 value 17.808697
## iter  50 value 17.807484
## final  value 17.807471 
## converged
## # weights:  11
## initial  value 117.798735 
## iter  10 value 62.532032
## iter  20 value 39.423796
## iter  30 value 20.882329
## iter  40 value 5.802558
## iter  50 value 4.238667
## iter  60 value 4.093766
## iter  70 value 3.906353
## iter  80 value 3.752858
## iter  90 value 3.751441
## iter 100 value 3.750651
## final  value 3.750651 
## stopped after 100 iterations
## # weights:  27
## initial  value 128.944525 
## iter  10 value 28.916308
## iter  20 value 2.544782
## iter  30 value 0.622254
## iter  40 value 0.470921
## iter  50 value 0.458107
## iter  60 value 0.400875
## iter  70 value 0.383844
## iter  80 value 0.378567
## iter  90 value 0.368423
## iter 100 value 0.363754
## final  value 0.363754 
## stopped after 100 iterations
## # weights:  43
## initial  value 145.756545 
## iter  10 value 7.286012
## iter  20 value 2.074917
## iter  30 value 0.713352
## iter  40 value 0.666646
## iter  50 value 0.617448
## iter  60 value 0.530408
## iter  70 value 0.496583
## iter  80 value 0.446063
## iter  90 value 0.400859
## iter 100 value 0.346148
## final  value 0.346148 
## stopped after 100 iterations
## # weights:  11
## initial  value 136.573936 
## iter  10 value 50.602615
## iter  20 value 46.833766
## iter  30 value 26.961829
## iter  40 value 5.865512
## iter  50 value 0.780629
## iter  60 value 0.588159
## iter  70 value 0.099307
## iter  80 value 0.072998
## iter  90 value 0.052567
## iter 100 value 0.043726
## final  value 0.043726 
## stopped after 100 iterations
## # weights:  27
## initial  value 136.309292 
## iter  10 value 4.877114
## iter  20 value 0.066469
## iter  30 value 0.000234
## final  value 0.000067 
## converged
## # weights:  43
## initial  value 110.927991 
## iter  10 value 1.490861
## iter  20 value 0.014917
## iter  30 value 0.000284
## final  value 0.000076 
## converged
## # weights:  11
## initial  value 130.883547 
## iter  10 value 47.711736
## iter  20 value 42.438918
## final  value 42.430540 
## converged
## # weights:  27
## initial  value 139.256648 
## iter  10 value 39.330260
## iter  20 value 19.437000
## iter  30 value 18.586620
## iter  40 value 18.346393
## iter  50 value 17.846184
## iter  60 value 17.600499
## iter  70 value 17.537828
## final  value 17.537822 
## converged
## # weights:  43
## initial  value 142.890639 
## iter  10 value 25.495956
## iter  20 value 18.040869
## iter  30 value 17.247641
## iter  40 value 16.817499
## iter  50 value 16.681648
## iter  60 value 16.655203
## iter  70 value 16.654763
## final  value 16.654763 
## converged
## # weights:  11
## initial  value 122.133337 
## iter  10 value 90.904292
## iter  20 value 40.727603
## iter  30 value 23.916155
## iter  40 value 7.159135
## iter  50 value 1.645080
## iter  60 value 1.238349
## iter  70 value 1.133691
## iter  80 value 1.132557
## iter  90 value 1.130056
## iter 100 value 1.126377
## final  value 1.126377 
## stopped after 100 iterations
## # weights:  27
## initial  value 140.255657 
## iter  10 value 10.775789
## iter  20 value 0.136456
## iter  30 value 0.128503
## iter  40 value 0.123164
## iter  50 value 0.112611
## iter  60 value 0.106691
## iter  70 value 0.105534
## iter  80 value 0.104602
## iter  90 value 0.104201
## iter 100 value 0.102790
## final  value 0.102790 
## stopped after 100 iterations
## # weights:  43
## initial  value 118.276408 
## iter  10 value 1.680762
## iter  20 value 0.139662
## iter  30 value 0.125141
## iter  40 value 0.122101
## iter  50 value 0.111513
## iter  60 value 0.106083
## iter  70 value 0.101511
## iter  80 value 0.094588
## iter  90 value 0.092658
## iter 100 value 0.088886
## final  value 0.088886 
## stopped after 100 iterations
## # weights:  11
## initial  value 139.815759 
## iter  10 value 49.218205
## iter  20 value 49.179366
## iter  30 value 48.681102
## iter  40 value 47.716719
## iter  50 value 45.708254
## iter  60 value 44.736072
## iter  70 value 43.984148
## iter  80 value 40.567875
## iter  90 value 23.113027
## iter 100 value 6.288677
## final  value 6.288677 
## stopped after 100 iterations
## # weights:  27
## initial  value 149.366729 
## iter  10 value 2.466301
## iter  20 value 1.059773
## iter  30 value 0.001220
## final  value 0.000081 
## converged
## # weights:  43
## initial  value 136.657276 
## iter  10 value 8.213127
## iter  20 value 1.308197
## iter  30 value 0.000724
## final  value 0.000065 
## converged
## # weights:  11
## initial  value 120.298639 
## iter  10 value 59.846225
## iter  20 value 49.667735
## iter  30 value 43.511410
## final  value 43.490065 
## converged
## # weights:  27
## initial  value 126.807775 
## iter  10 value 26.008124
## iter  20 value 20.434232
## iter  30 value 19.940407
## iter  40 value 19.824824
## final  value 19.823365 
## converged
## # weights:  43
## initial  value 125.511635 
## iter  10 value 26.156445
## iter  20 value 20.073950
## iter  30 value 19.214227
## iter  40 value 19.191282
## iter  50 value 19.187131
## iter  60 value 19.186937
## final  value 19.186933 
## converged
## # weights:  11
## initial  value 120.732543 
## iter  10 value 44.189662
## iter  20 value 15.604472
## iter  30 value 6.021103
## iter  40 value 4.862302
## iter  50 value 4.493176
## iter  60 value 4.118471
## iter  70 value 3.983550
## iter  80 value 3.927874
## iter  90 value 3.898267
## iter 100 value 3.839348
## final  value 3.839348 
## stopped after 100 iterations
## # weights:  27
## initial  value 125.441688 
## iter  10 value 26.051981
## iter  20 value 2.193623
## iter  30 value 0.696269
## iter  40 value 0.684594
## iter  50 value 0.618998
## iter  60 value 0.547876
## iter  70 value 0.534257
## iter  80 value 0.526722
## iter  90 value 0.503285
## iter 100 value 0.498216
## final  value 0.498216 
## stopped after 100 iterations
## # weights:  43
## initial  value 106.294860 
## iter  10 value 4.362561
## iter  20 value 0.829063
## iter  30 value 0.673181
## iter  40 value 0.609827
## iter  50 value 0.511886
## iter  60 value 0.464201
## iter  70 value 0.435561
## iter  80 value 0.425171
## iter  90 value 0.400511
## iter 100 value 0.360401
## final  value 0.360401 
## stopped after 100 iterations
## # weights:  11
## initial  value 133.877086 
## iter  10 value 66.331214
## iter  20 value 9.550499
## iter  30 value 4.110210
## iter  40 value 3.844185
## iter  50 value 2.991676
## iter  60 value 2.753673
## iter  70 value 2.641976
## iter  80 value 2.582083
## iter  90 value 2.534596
## iter 100 value 2.500609
## final  value 2.500609 
## stopped after 100 iterations
## # weights:  27
## initial  value 143.654877 
## iter  10 value 6.515489
## iter  20 value 1.118137
## iter  30 value 0.002071
## final  value 0.000051 
## converged
## # weights:  43
## initial  value 128.078143 
## iter  10 value 3.494155
## iter  20 value 0.275447
## iter  30 value 0.001532
## final  value 0.000077 
## converged
## # weights:  11
## initial  value 119.980202 
## iter  10 value 45.175852
## iter  20 value 43.739354
## final  value 43.739326 
## converged
## # weights:  27
## initial  value 123.625253 
## iter  10 value 35.381919
## iter  20 value 23.202033
## iter  30 value 21.094774
## iter  40 value 21.049663
## iter  50 value 21.046957
## iter  60 value 21.046831
## final  value 21.046818 
## converged
## # weights:  43
## initial  value 128.781530 
## iter  10 value 21.761171
## iter  20 value 19.335829
## iter  30 value 18.781377
## iter  40 value 18.753997
## iter  50 value 18.752843
## final  value 18.752822 
## converged
## # weights:  11
## initial  value 121.007491 
## iter  10 value 54.509450
## iter  20 value 49.127206
## iter  30 value 41.772830
## iter  40 value 18.718213
## iter  50 value 6.465952
## iter  60 value 4.694435
## iter  70 value 4.407082
## iter  80 value 3.891798
## iter  90 value 3.851270
## iter 100 value 3.846231
## final  value 3.846231 
## stopped after 100 iterations
## # weights:  27
## initial  value 167.104402 
## iter  10 value 44.366025
## iter  20 value 3.735448
## iter  30 value 0.755944
## iter  40 value 0.683206
## iter  50 value 0.616984
## iter  60 value 0.547685
## iter  70 value 0.505156
## iter  80 value 0.492646
## iter  90 value 0.488078
## iter 100 value 0.481755
## final  value 0.481755 
## stopped after 100 iterations
## # weights:  43
## initial  value 127.727151 
## iter  10 value 6.085705
## iter  20 value 0.573555
## iter  30 value 0.481376
## iter  40 value 0.428833
## iter  50 value 0.346820
## iter  60 value 0.329741
## iter  70 value 0.314468
## iter  80 value 0.304692
## iter  90 value 0.283972
## iter 100 value 0.268824
## final  value 0.268824 
## stopped after 100 iterations
## # weights:  11
## initial  value 119.525234 
## iter  10 value 26.202125
## iter  20 value 3.144191
## iter  30 value 1.529051
## iter  40 value 0.995187
## iter  50 value 0.833058
## iter  60 value 0.579513
## iter  70 value 0.169901
## iter  80 value 0.119997
## iter  90 value 0.081797
## iter 100 value 0.077613
## final  value 0.077613 
## stopped after 100 iterations
## # weights:  27
## initial  value 136.317868 
## iter  10 value 5.678333
## iter  20 value 0.136921
## iter  30 value 0.000440
## final  value 0.000082 
## converged
## # weights:  43
## initial  value 137.718722 
## iter  10 value 10.658195
## iter  20 value 0.832374
## iter  30 value 0.006460
## final  value 0.000085 
## converged
## # weights:  11
## initial  value 126.835468 
## iter  10 value 65.217306
## iter  20 value 47.223159
## iter  30 value 43.830052
## final  value 43.816167 
## converged
## # weights:  27
## initial  value 123.123419 
## iter  10 value 26.498937
## iter  20 value 19.800468
## iter  30 value 19.689800
## iter  40 value 19.510320
## iter  50 value 19.508744
## final  value 19.508744 
## converged
## # weights:  43
## initial  value 165.558507 
## iter  10 value 25.057848
## iter  20 value 18.359606
## iter  30 value 17.782765
## iter  40 value 17.688680
## iter  50 value 17.686231
## iter  60 value 17.685999
## final  value 17.685992 
## converged
## # weights:  11
## initial  value 130.227676 
## iter  10 value 52.945625
## iter  20 value 45.667510
## iter  30 value 41.028683
## iter  40 value 9.918084
## iter  50 value 4.926998
## iter  60 value 4.133287
## iter  70 value 3.518104
## iter  80 value 3.207291
## iter  90 value 3.095079
## iter 100 value 3.055372
## final  value 3.055372 
## stopped after 100 iterations
## # weights:  27
## initial  value 121.231768 
## iter  10 value 4.359364
## iter  20 value 0.425646
## iter  30 value 0.385663
## iter  40 value 0.318360
## iter  50 value 0.270417
## iter  60 value 0.259139
## iter  70 value 0.251975
## iter  80 value 0.237955
## iter  90 value 0.219997
## iter 100 value 0.215349
## final  value 0.215349 
## stopped after 100 iterations
## # weights:  43
## initial  value 121.321052 
## iter  10 value 4.596553
## iter  20 value 0.281156
## iter  30 value 0.262097
## iter  40 value 0.252159
## iter  50 value 0.241340
## iter  60 value 0.227837
## iter  70 value 0.215638
## iter  80 value 0.210772
## iter  90 value 0.205087
## iter 100 value 0.197748
## final  value 0.197748 
## stopped after 100 iterations
## # weights:  11
## initial  value 120.000142 
## iter  10 value 24.534533
## iter  20 value 3.627583
## iter  30 value 2.375604
## iter  40 value 2.160412
## iter  50 value 2.094882
## iter  60 value 2.077211
## iter  70 value 1.008422
## iter  80 value 0.859583
## iter  90 value 0.597558
## iter 100 value 0.597077
## final  value 0.597077 
## stopped after 100 iterations
## # weights:  27
## initial  value 124.239513 
## iter  10 value 33.144062
## iter  20 value 12.249167
## iter  30 value 3.755578
## iter  40 value 0.560755
## iter  50 value 0.001423
## iter  60 value 0.000374
## final  value 0.000074 
## converged
## # weights:  43
## initial  value 114.847482 
## iter  10 value 6.651025
## iter  20 value 1.376867
## iter  30 value 0.001867
## final  value 0.000081 
## converged
## # weights:  11
## initial  value 119.635574 
## iter  10 value 44.555413
## iter  20 value 43.912698
## final  value 43.912693 
## converged
## # weights:  27
## initial  value 139.103771 
## iter  10 value 42.824298
## iter  20 value 21.728925
## iter  30 value 21.293594
## iter  40 value 21.242763
## iter  50 value 21.235297
## final  value 21.235292 
## converged
## # weights:  43
## initial  value 115.491055 
## iter  10 value 23.811345
## iter  20 value 19.259573
## iter  30 value 19.032685
## iter  40 value 18.894558
## iter  50 value 18.893104
## iter  60 value 18.882800
## iter  70 value 18.463876
## iter  80 value 18.406520
## final  value 18.406508 
## converged
## # weights:  11
## initial  value 127.290216 
## iter  10 value 69.870951
## iter  20 value 57.171148
## iter  30 value 56.068708
## iter  40 value 48.377398
## iter  50 value 46.573094
## iter  60 value 45.843647
## iter  70 value 45.504171
## iter  80 value 44.465094
## iter  90 value 7.450672
## iter 100 value 5.498785
## final  value 5.498785 
## stopped after 100 iterations
## # weights:  27
## initial  value 123.446205 
## iter  10 value 31.631816
## iter  20 value 6.844306
## iter  30 value 0.977464
## iter  40 value 0.923549
## iter  50 value 0.670981
## iter  60 value 0.637232
## iter  70 value 0.586420
## iter  80 value 0.558158
## iter  90 value 0.546300
## iter 100 value 0.513952
## final  value 0.513952 
## stopped after 100 iterations
## # weights:  43
## initial  value 115.088182 
## iter  10 value 7.715853
## iter  20 value 2.103106
## iter  30 value 0.954510
## iter  40 value 0.910427
## iter  50 value 0.843465
## iter  60 value 0.788446
## iter  70 value 0.768192
## iter  80 value 0.711652
## iter  90 value 0.670759
## iter 100 value 0.555623
## final  value 0.555623 
## stopped after 100 iterations
## # weights:  11
## initial  value 119.261214 
## iter  10 value 50.240382
## iter  20 value 49.362583
## iter  30 value 46.267265
## iter  40 value 31.568932
## iter  50 value 6.521248
## iter  60 value 4.315423
## iter  70 value 3.627730
## iter  80 value 3.206720
## iter  90 value 2.252219
## iter 100 value 2.211169
## final  value 2.211169 
## stopped after 100 iterations
## # weights:  27
## initial  value 134.566698 
## iter  10 value 5.973748
## iter  20 value 1.944057
## iter  30 value 0.149138
## iter  40 value 0.000474
## final  value 0.000043 
## converged
## # weights:  43
## initial  value 116.472391 
## iter  10 value 4.886976
## iter  20 value 1.752043
## iter  30 value 0.006629
## final  value 0.000078 
## converged
## # weights:  11
## initial  value 130.196236 
## iter  10 value 44.844684
## iter  20 value 43.641630
## final  value 43.638718 
## converged
## # weights:  27
## initial  value 124.305450 
## iter  10 value 23.624477
## iter  20 value 20.446754
## iter  30 value 20.418222
## final  value 20.416317 
## converged
## # weights:  43
## initial  value 128.512971 
## iter  10 value 42.094692
## iter  20 value 20.716717
## iter  30 value 18.596904
## iter  40 value 18.373917
## iter  50 value 18.287509
## iter  60 value 18.274464
## iter  70 value 18.274300
## final  value 18.274299 
## converged
## # weights:  11
## initial  value 120.704206 
## iter  10 value 36.843225
## iter  20 value 4.733819
## iter  30 value 3.476520
## iter  40 value 3.373940
## iter  50 value 3.368072
## iter  60 value 3.366706
## iter  70 value 3.364872
## iter  80 value 3.363768
## iter  90 value 3.363667
## iter 100 value 3.363650
## final  value 3.363650 
## stopped after 100 iterations
## # weights:  27
## initial  value 117.988778 
## iter  10 value 28.496215
## iter  20 value 2.622801
## iter  30 value 0.639496
## iter  40 value 0.625373
## iter  50 value 0.579688
## iter  60 value 0.532720
## iter  70 value 0.517216
## iter  80 value 0.510259
## iter  90 value 0.480207
## iter 100 value 0.472050
## final  value 0.472050 
## stopped after 100 iterations
## # weights:  43
## initial  value 128.042835 
## iter  10 value 4.161549
## iter  20 value 0.990133
## iter  30 value 0.613293
## iter  40 value 0.536865
## iter  50 value 0.496297
## iter  60 value 0.429209
## iter  70 value 0.382132
## iter  80 value 0.364344
## iter  90 value 0.354215
## iter 100 value 0.344681
## final  value 0.344681 
## stopped after 100 iterations
## # weights:  11
## initial  value 137.843124 
## iter  10 value 49.961213
## iter  20 value 49.906785
## final  value 49.906609 
## converged
## # weights:  27
## initial  value 144.912582 
## iter  10 value 11.628543
## iter  20 value 0.785903
## iter  30 value 0.000263
## final  value 0.000069 
## converged
## # weights:  43
## initial  value 152.144835 
## iter  10 value 8.419266
## iter  20 value 0.450409
## iter  30 value 0.001446
## final  value 0.000067 
## converged
## # weights:  11
## initial  value 138.739575 
## iter  10 value 58.629093
## iter  20 value 45.242102
## iter  30 value 43.291820
## final  value 43.290421 
## converged
## # weights:  27
## initial  value 119.883967 
## iter  10 value 23.843853
## iter  20 value 20.092334
## iter  30 value 20.005368
## iter  40 value 20.003974
## iter  40 value 20.003974
## iter  40 value 20.003974
## final  value 20.003974 
## converged
## # weights:  43
## initial  value 123.970047 
## iter  10 value 24.966757
## iter  20 value 18.628742
## iter  30 value 18.427409
## iter  40 value 18.409725
## iter  50 value 18.409367
## iter  60 value 18.409329
## final  value 18.409322 
## converged
## # weights:  11
## initial  value 132.152536 
## iter  10 value 56.909018
## iter  20 value 54.940339
## iter  30 value 54.108119
## iter  40 value 53.918559
## iter  50 value 53.831568
## iter  60 value 52.978347
## iter  70 value 52.339339
## iter  80 value 51.485175
## iter  90 value 51.351022
## iter 100 value 50.945782
## final  value 50.945782 
## stopped after 100 iterations
## # weights:  27
## initial  value 124.125900 
## iter  10 value 8.659948
## iter  20 value 3.121221
## iter  30 value 1.338187
## iter  40 value 1.062220
## iter  50 value 0.833246
## iter  60 value 0.747981
## iter  70 value 0.681194
## iter  80 value 0.608250
## iter  90 value 0.561390
## iter 100 value 0.519708
## final  value 0.519708 
## stopped after 100 iterations
## # weights:  43
## initial  value 124.696050 
## iter  10 value 7.133159
## iter  20 value 2.294956
## iter  30 value 0.650383
## iter  40 value 0.582001
## iter  50 value 0.507633
## iter  60 value 0.455092
## iter  70 value 0.426843
## iter  80 value 0.410376
## iter  90 value 0.386610
## iter 100 value 0.365344
## final  value 0.365344 
## stopped after 100 iterations
## # weights:  11
## initial  value 124.998321 
## iter  10 value 47.882425
## iter  20 value 42.994709
## iter  30 value 23.613078
## iter  40 value 6.111401
## iter  50 value 4.751740
## iter  60 value 3.840177
## iter  70 value 3.451751
## iter  80 value 3.254215
## iter  90 value 3.154201
## iter 100 value 3.029271
## final  value 3.029271 
## stopped after 100 iterations
## # weights:  27
## initial  value 125.542049 
## iter  10 value 6.314427
## iter  20 value 0.470858
## iter  30 value 0.022274
## iter  40 value 0.000458
## final  value 0.000052 
## converged
## # weights:  43
## initial  value 138.166366 
## iter  10 value 8.535002
## iter  20 value 0.624930
## iter  30 value 0.012967
## iter  40 value 0.000798
## final  value 0.000063 
## converged
## # weights:  11
## initial  value 123.927867 
## iter  10 value 54.995970
## iter  20 value 44.382863
## iter  30 value 44.324383
## final  value 44.324214 
## converged
## # weights:  27
## initial  value 119.008195 
## iter  10 value 25.174539
## iter  20 value 21.512402
## iter  30 value 21.266802
## iter  40 value 21.247207
## final  value 21.247205 
## converged
## # weights:  43
## initial  value 120.606604 
## iter  10 value 33.613848
## iter  20 value 19.279870
## iter  30 value 19.166714
## iter  40 value 18.826482
## iter  50 value 18.625006
## iter  60 value 18.496822
## iter  70 value 18.482830
## iter  80 value 18.480947
## final  value 18.480936 
## converged
## # weights:  11
## initial  value 120.118681 
## iter  10 value 35.390872
## iter  20 value 7.900423
## iter  30 value 4.031973
## iter  40 value 3.994094
## iter  50 value 3.934311
## iter  60 value 3.908096
## iter  70 value 3.872599
## iter  80 value 3.864340
## iter  90 value 3.863643
## iter 100 value 3.863381
## final  value 3.863381 
## stopped after 100 iterations
## # weights:  27
## initial  value 152.326336 
## iter  10 value 28.957719
## iter  20 value 3.708953
## iter  30 value 1.546339
## iter  40 value 0.747462
## iter  50 value 0.632846
## iter  60 value 0.543453
## iter  70 value 0.501639
## iter  80 value 0.458726
## iter  90 value 0.335083
## iter 100 value 0.312806
## final  value 0.312806 
## stopped after 100 iterations
## # weights:  43
## initial  value 138.686191 
## iter  10 value 5.004718
## iter  20 value 0.689107
## iter  30 value 0.567050
## iter  40 value 0.520825
## iter  50 value 0.473306
## iter  60 value 0.463761
## iter  70 value 0.445476
## iter  80 value 0.406388
## iter  90 value 0.396516
## iter 100 value 0.383204
## final  value 0.383204 
## stopped after 100 iterations
## # weights:  11
## initial  value 125.068191 
## iter  10 value 49.725038
## iter  20 value 48.534929
## iter  30 value 48.501014
## iter  40 value 48.499048
## iter  50 value 48.497072
## iter  60 value 48.496755
## iter  70 value 48.495739
## iter  80 value 48.494220
## iter  90 value 48.493273
## iter 100 value 48.492960
## final  value 48.492960 
## stopped after 100 iterations
## # weights:  27
## initial  value 120.155726 
## iter  10 value 15.990281
## iter  20 value 5.699250
## iter  30 value 2.350310
## iter  40 value 0.643988
## iter  50 value 0.000895
## final  value 0.000053 
## converged
## # weights:  43
## initial  value 120.439904 
## iter  10 value 4.882118
## iter  20 value 0.510851
## iter  30 value 0.011557
## final  value 0.000081 
## converged
## # weights:  11
## initial  value 128.878843 
## iter  10 value 61.436034
## iter  20 value 54.214754
## iter  30 value 44.056862
## final  value 43.743957 
## converged
## # weights:  27
## initial  value 125.847313 
## iter  10 value 24.629184
## iter  20 value 19.863934
## iter  30 value 19.831238
## iter  40 value 19.830701
## iter  40 value 19.830701
## iter  40 value 19.830701
## final  value 19.830701 
## converged
## # weights:  43
## initial  value 142.942241 
## iter  10 value 24.707928
## iter  20 value 18.623793
## iter  30 value 18.159229
## iter  40 value 18.065373
## iter  50 value 18.037153
## iter  60 value 18.034057
## final  value 18.033909 
## converged
## # weights:  11
## initial  value 131.830554 
## iter  10 value 50.045011
## iter  20 value 49.961005
## iter  30 value 49.951348
## iter  40 value 47.534975
## iter  50 value 19.450511
## iter  60 value 5.282320
## iter  70 value 3.805576
## iter  80 value 3.684525
## iter  90 value 3.668103
## iter 100 value 3.667116
## final  value 3.667116 
## stopped after 100 iterations
## # weights:  27
## initial  value 127.157057 
## iter  10 value 19.598422
## iter  20 value 1.839283
## iter  30 value 1.060086
## iter  40 value 0.682353
## iter  50 value 0.607421
## iter  60 value 0.541387
## iter  70 value 0.508578
## iter  80 value 0.481491
## iter  90 value 0.436727
## iter 100 value 0.424470
## final  value 0.424470 
## stopped after 100 iterations
## # weights:  43
## initial  value 147.461086 
## iter  10 value 9.790819
## iter  20 value 1.518969
## iter  30 value 0.836010
## iter  40 value 0.499330
## iter  50 value 0.477058
## iter  60 value 0.432213
## iter  70 value 0.414492
## iter  80 value 0.361462
## iter  90 value 0.331723
## iter 100 value 0.313399
## final  value 0.313399 
## stopped after 100 iterations
## # weights:  11
## initial  value 152.471191 
## iter  10 value 69.582700
## iter  20 value 47.009934
## iter  30 value 46.798129
## final  value 46.796573 
## converged
resultado_entrenamiento6 <- predict(modelo6,entrenamiento)
resultado_prueba6 <- predict(modelo6,prueba)

# Matriz de Confusión
# Es una tabla la evaluación que desglosa el rendimiento del modelo de clasificación

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

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

Tabla de Resultados

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

rownames(resultados) <- c("Exactitud del Entrenamiento", "Exactitud de la Prueba")
resultados
##                             svmLinear svmLinear.1 svmLinear.2 svmLinear.3
## Exactitud del Entrenamiento 0.9916667   0.9916667   0.9666667   0.9666667
## Exactitud de la Prueba      0.9666667   0.9666667   0.9333333   0.9333333
##                             svmLinear.4 svmLinear.5
## Exactitud del Entrenamiento   1.0000000   0.9666667
## Exactitud de la Prueba        0.9333333   0.9666667

Conclusión

En conclusión, el modelo Redes Neuronales es el recomendado para la clasificación de lirios.