El paquete CARET (Classification And Regression Training) es un paquete integral con una amplia variedad de algoritmos para el aprendizaje automático.
# 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)
df <- data.frame(iris)
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
# 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, ]
Los métodos más utilizados para modelar aprendizaje automático son:
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
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
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
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
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
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
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
En conclusión, el modelo Redes Neuronales es el recomendado para la clasificación de lirios.