El paquete CARET (Classification and REgression Trainning) es un paquete integral con una amplia variedad de algoritmos para al 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 precargados
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)
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)
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_entrenamiento1 <- predict(modelo1, entrenamiento)
resultado_prueba1 <- predict(modelo1, prueba)
# Matriz de confusión
# Es una tabla de evaluación que desglosa el rendimiento del modelo de clasificación
# Matriz de Confusión del Resultado del Entrenamiento
mcre1 <- confusionMatrix(resultado_entrenamiento1, 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="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 rendimiento del modelo de clasificación
# Matriz de Confusión del Resultado del 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 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
modelo3 <- train(Species~., 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 rendimiento del modelo de clasificación
# Matriz de Confusión del Resultado del 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 de evaluación que desglosa el rendimiento del modelo de clasificación
# Matriz de Confusión del Resultado del 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),
tuenGrid = 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 rendimiento del modelo de clasificación
# Matriz de Confusión del Resultado del 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 121.479281
## iter 10 value 53.450453
## iter 20 value 49.907198
## final value 49.906520
## converged
## # weights: 27
## initial value 150.162177
## iter 10 value 12.272319
## iter 20 value 0.635916
## iter 30 value 0.002021
## final value 0.000076
## converged
## # weights: 43
## initial value 148.279023
## iter 10 value 4.533150
## iter 20 value 0.503591
## iter 30 value 0.000374
## final value 0.000074
## converged
## # weights: 11
## initial value 124.326964
## iter 10 value 47.983292
## iter 20 value 43.936907
## final value 43.936579
## converged
## # weights: 27
## initial value 130.514362
## iter 10 value 30.276382
## iter 20 value 21.632233
## iter 30 value 20.037113
## iter 40 value 19.875577
## iter 50 value 19.845053
## iter 60 value 19.843091
## final value 19.843084
## converged
## # weights: 43
## initial value 133.161812
## iter 10 value 32.634556
## iter 20 value 20.839176
## iter 30 value 19.121106
## iter 40 value 18.783068
## iter 50 value 18.656955
## iter 60 value 18.615183
## iter 70 value 18.397942
## iter 80 value 18.307723
## final value 18.307489
## converged
## # weights: 11
## initial value 121.735494
## iter 10 value 51.042971
## iter 20 value 50.097825
## iter 30 value 50.072042
## iter 40 value 49.875581
## iter 50 value 45.727559
## iter 60 value 17.150500
## iter 70 value 5.416728
## iter 80 value 4.324952
## iter 90 value 4.173898
## iter 100 value 3.920196
## final value 3.920196
## stopped after 100 iterations
## # weights: 27
## initial value 134.149644
## iter 10 value 24.495796
## iter 20 value 6.690057
## iter 30 value 5.386809
## iter 40 value 5.331828
## iter 50 value 0.766059
## iter 60 value 0.692709
## iter 70 value 0.659993
## iter 80 value 0.575032
## iter 90 value 0.514554
## iter 100 value 0.507735
## final value 0.507735
## stopped after 100 iterations
## # weights: 43
## initial value 154.030125
## iter 10 value 12.401045
## iter 20 value 2.487019
## iter 30 value 0.540987
## iter 40 value 0.474536
## iter 50 value 0.408900
## iter 60 value 0.397111
## iter 70 value 0.373081
## iter 80 value 0.356579
## iter 90 value 0.345357
## iter 100 value 0.331839
## final value 0.331839
## stopped after 100 iterations
## # weights: 11
## initial value 131.243270
## iter 10 value 14.809508
## iter 20 value 1.061007
## iter 30 value 0.145675
## iter 40 value 0.104787
## iter 50 value 0.070078
## iter 60 value 0.065702
## iter 70 value 0.051699
## iter 80 value 0.049185
## iter 90 value 0.048328
## iter 100 value 0.041674
## final value 0.041674
## stopped after 100 iterations
## # weights: 27
## initial value 129.116233
## iter 10 value 23.774884
## iter 20 value 0.492883
## iter 30 value 0.000534
## final value 0.000073
## converged
## # weights: 43
## initial value 119.029849
## iter 10 value 2.612837
## iter 20 value 0.006584
## iter 30 value 0.000242
## final value 0.000086
## converged
## # weights: 11
## initial value 112.582199
## iter 10 value 55.453161
## iter 20 value 44.009779
## iter 30 value 43.539917
## final value 43.539622
## converged
## # weights: 27
## initial value 129.529045
## iter 10 value 32.024526
## iter 20 value 19.384404
## iter 30 value 19.202989
## iter 40 value 19.198455
## final value 19.198447
## converged
## # weights: 43
## initial value 108.972312
## iter 10 value 31.010243
## iter 20 value 19.496527
## iter 30 value 18.154485
## iter 40 value 17.809719
## iter 50 value 17.480763
## iter 60 value 17.440168
## iter 70 value 17.439749
## final value 17.439746
## converged
## # weights: 11
## initial value 137.763002
## iter 10 value 50.010845
## iter 20 value 49.986907
## iter 30 value 49.976298
## iter 40 value 49.964203
## iter 50 value 49.203975
## iter 60 value 24.104967
## iter 70 value 3.277192
## iter 80 value 2.052800
## iter 90 value 2.025059
## iter 100 value 1.999749
## final value 1.999749
## stopped after 100 iterations
## # weights: 27
## initial value 119.753476
## iter 10 value 3.223135
## iter 20 value 0.281046
## iter 30 value 0.262725
## iter 40 value 0.241225
## iter 50 value 0.217635
## iter 60 value 0.197174
## iter 70 value 0.192168
## iter 80 value 0.183058
## iter 90 value 0.170137
## iter 100 value 0.165508
## final value 0.165508
## stopped after 100 iterations
## # weights: 43
## initial value 137.209708
## iter 10 value 4.540361
## iter 20 value 0.188116
## iter 30 value 0.167629
## iter 40 value 0.160712
## iter 50 value 0.152925
## iter 60 value 0.145787
## iter 70 value 0.138713
## iter 80 value 0.136175
## iter 90 value 0.131828
## iter 100 value 0.128243
## final value 0.128243
## stopped after 100 iterations
## # weights: 11
## initial value 117.054213
## iter 10 value 30.680231
## iter 20 value 4.032632
## iter 30 value 2.825511
## iter 40 value 2.529068
## iter 50 value 2.471806
## iter 60 value 2.425056
## iter 70 value 2.288619
## iter 80 value 2.233082
## iter 90 value 2.123539
## iter 100 value 2.087243
## final value 2.087243
## stopped after 100 iterations
## # weights: 27
## initial value 149.644268
## iter 10 value 5.474700
## iter 20 value 4.607306
## iter 30 value 4.602719
## iter 40 value 4.600223
## iter 50 value 4.589493
## iter 60 value 3.033383
## iter 70 value 0.213480
## iter 80 value 0.054000
## iter 90 value 0.019348
## iter 100 value 0.012779
## final value 0.012779
## stopped after 100 iterations
## # weights: 43
## initial value 112.386169
## iter 10 value 12.055014
## iter 20 value 0.358987
## iter 30 value 0.000382
## final value 0.000054
## converged
## # weights: 11
## initial value 130.424103
## iter 10 value 66.852190
## iter 20 value 43.091788
## iter 30 value 42.999016
## final value 42.998810
## converged
## # weights: 27
## initial value 126.864048
## iter 10 value 24.051040
## iter 20 value 20.939026
## iter 30 value 20.836264
## final value 20.834976
## converged
## # weights: 43
## initial value 130.949348
## iter 10 value 28.208504
## iter 20 value 19.010427
## iter 30 value 18.598898
## iter 40 value 18.318582
## iter 50 value 18.161707
## iter 60 value 18.139104
## final value 18.139058
## converged
## # weights: 11
## initial value 121.323124
## iter 10 value 12.924895
## iter 20 value 5.252596
## iter 30 value 4.383154
## iter 40 value 4.098448
## iter 50 value 3.967205
## iter 60 value 3.899428
## iter 70 value 3.830823
## iter 80 value 3.821472
## iter 90 value 3.820756
## final value 3.820738
## converged
## # weights: 27
## initial value 120.622578
## iter 10 value 8.310181
## iter 20 value 0.987043
## iter 30 value 0.565148
## iter 40 value 0.494250
## iter 50 value 0.455880
## iter 60 value 0.434680
## iter 70 value 0.420169
## iter 80 value 0.401909
## iter 90 value 0.378788
## iter 100 value 0.374728
## final value 0.374728
## stopped after 100 iterations
## # weights: 43
## initial value 130.723706
## iter 10 value 4.420186
## iter 20 value 1.915553
## iter 30 value 0.764447
## iter 40 value 0.684566
## iter 50 value 0.561051
## iter 60 value 0.513133
## iter 70 value 0.441263
## iter 80 value 0.424096
## iter 90 value 0.387991
## iter 100 value 0.370354
## final value 0.370354
## stopped after 100 iterations
## # weights: 11
## initial value 121.028047
## iter 10 value 49.479862
## iter 20 value 46.177135
## iter 30 value 40.540509
## iter 40 value 10.408807
## iter 50 value 4.783788
## iter 60 value 3.294146
## iter 70 value 3.095910
## iter 80 value 2.912052
## iter 90 value 2.765088
## iter 100 value 2.620196
## final value 2.620196
## stopped after 100 iterations
## # weights: 27
## initial value 131.769498
## iter 10 value 9.264875
## iter 20 value 2.371256
## iter 30 value 0.333096
## iter 40 value 0.001440
## final value 0.000091
## converged
## # weights: 43
## initial value 146.839082
## iter 10 value 3.873121
## iter 20 value 0.107179
## iter 30 value 0.000195
## final value 0.000076
## converged
## # weights: 11
## initial value 121.980444
## iter 10 value 61.293876
## iter 20 value 52.381382
## iter 30 value 43.125735
## final value 43.099744
## converged
## # weights: 27
## initial value 153.961556
## iter 10 value 29.349334
## iter 20 value 19.711297
## iter 30 value 19.582523
## iter 40 value 19.580337
## iter 50 value 19.580279
## iter 50 value 19.580279
## iter 50 value 19.580279
## final value 19.580279
## converged
## # weights: 43
## initial value 128.589763
## iter 10 value 23.186140
## iter 20 value 18.311889
## iter 30 value 17.898050
## iter 40 value 17.801252
## iter 50 value 17.800988
## final value 17.800987
## converged
## # weights: 11
## initial value 118.406065
## iter 10 value 50.593711
## iter 20 value 49.965540
## iter 30 value 49.962181
## iter 40 value 49.822113
## iter 50 value 47.296091
## iter 60 value 24.528501
## iter 70 value 5.169297
## iter 80 value 4.036761
## iter 90 value 3.936225
## iter 100 value 3.767303
## final value 3.767303
## stopped after 100 iterations
## # weights: 27
## initial value 124.108624
## iter 10 value 6.223538
## iter 20 value 1.124703
## iter 30 value 0.571017
## iter 40 value 0.509635
## iter 50 value 0.458401
## iter 60 value 0.439947
## iter 70 value 0.425443
## iter 80 value 0.413000
## iter 90 value 0.394446
## iter 100 value 0.374202
## final value 0.374202
## stopped after 100 iterations
## # weights: 43
## initial value 117.096975
## iter 10 value 4.999742
## iter 20 value 1.167155
## iter 30 value 0.593440
## iter 40 value 0.571855
## iter 50 value 0.521492
## iter 60 value 0.471347
## iter 70 value 0.415447
## iter 80 value 0.405438
## iter 90 value 0.399166
## iter 100 value 0.387005
## final value 0.387005
## stopped after 100 iterations
## # weights: 11
## initial value 125.431516
## iter 10 value 49.347266
## iter 20 value 43.844456
## iter 30 value 19.801032
## iter 40 value 5.991168
## iter 50 value 3.732651
## iter 60 value 3.299211
## iter 70 value 2.994679
## iter 80 value 2.378984
## iter 90 value 2.226099
## iter 100 value 2.146529
## final value 2.146529
## stopped after 100 iterations
## # weights: 27
## initial value 141.972413
## iter 10 value 39.486499
## iter 20 value 10.338255
## iter 30 value 7.785560
## iter 40 value 2.895495
## iter 50 value 0.287671
## iter 60 value 0.038772
## iter 70 value 0.016741
## iter 80 value 0.004492
## iter 90 value 0.001125
## iter 100 value 0.000543
## final value 0.000543
## stopped after 100 iterations
## # weights: 43
## initial value 141.978730
## iter 10 value 13.892559
## iter 20 value 0.172568
## iter 30 value 0.005507
## final value 0.000062
## converged
## # weights: 11
## initial value 143.227650
## iter 10 value 50.815925
## iter 20 value 43.760163
## iter 30 value 43.709409
## final value 43.709395
## converged
## # weights: 27
## initial value 122.105724
## iter 10 value 27.148012
## iter 20 value 20.328803
## iter 30 value 19.708544
## iter 40 value 19.697663
## final value 19.697661
## converged
## # weights: 43
## initial value 142.811757
## iter 10 value 29.592823
## iter 20 value 19.206690
## iter 30 value 18.530038
## iter 40 value 18.423242
## iter 50 value 18.410673
## iter 60 value 18.408724
## iter 70 value 18.408668
## final value 18.408662
## converged
## # weights: 11
## initial value 127.392443
## iter 10 value 17.625490
## iter 20 value 3.771293
## iter 30 value 3.423315
## iter 40 value 3.297138
## iter 50 value 3.293962
## iter 60 value 3.289638
## iter 70 value 3.280836
## iter 80 value 3.280612
## iter 90 value 3.280330
## final value 3.280206
## converged
## # weights: 27
## initial value 118.658840
## iter 10 value 4.758127
## iter 20 value 0.417091
## iter 30 value 0.408543
## iter 40 value 0.388680
## iter 50 value 0.369458
## iter 60 value 0.362392
## iter 70 value 0.345066
## iter 80 value 0.336717
## iter 90 value 0.313423
## iter 100 value 0.304849
## final value 0.304849
## stopped after 100 iterations
## # weights: 43
## initial value 123.493991
## iter 10 value 3.785004
## iter 20 value 0.408358
## iter 30 value 0.347584
## iter 40 value 0.320774
## iter 50 value 0.267889
## iter 60 value 0.231334
## iter 70 value 0.222518
## iter 80 value 0.206368
## iter 90 value 0.198959
## iter 100 value 0.194445
## final value 0.194445
## stopped after 100 iterations
## # weights: 11
## initial value 133.204506
## iter 10 value 50.865697
## iter 20 value 24.456450
## iter 30 value 8.487088
## iter 40 value 3.988170
## iter 50 value 1.519749
## iter 60 value 1.212232
## iter 70 value 1.161712
## iter 80 value 1.146934
## iter 90 value 0.920692
## iter 100 value 0.822995
## final value 0.822995
## stopped after 100 iterations
## # weights: 27
## initial value 124.126439
## iter 10 value 8.015160
## iter 20 value 1.332784
## iter 30 value 0.000400
## final value 0.000089
## converged
## # weights: 43
## initial value 124.452987
## iter 10 value 5.201666
## iter 20 value 0.115385
## final value 0.000067
## converged
## # weights: 11
## initial value 128.354564
## iter 10 value 51.415195
## iter 20 value 44.176129
## iter 30 value 44.148405
## final value 44.148140
## converged
## # weights: 27
## initial value 119.366275
## iter 10 value 21.681267
## iter 20 value 19.617666
## iter 30 value 19.465080
## iter 40 value 19.444229
## final value 19.444104
## converged
## # weights: 43
## initial value 118.678382
## iter 10 value 20.806460
## iter 20 value 18.874585
## iter 30 value 18.816969
## iter 40 value 18.811556
## iter 50 value 18.811387
## final value 18.811387
## converged
## # weights: 11
## initial value 132.121834
## iter 10 value 50.152553
## iter 20 value 49.246120
## iter 30 value 44.421842
## iter 40 value 39.239477
## iter 50 value 29.195439
## iter 60 value 5.317869
## iter 70 value 4.127574
## iter 80 value 3.935638
## iter 90 value 3.801276
## iter 100 value 3.772311
## final value 3.772311
## stopped after 100 iterations
## # weights: 27
## initial value 126.964921
## iter 10 value 9.476206
## iter 20 value 0.743880
## iter 30 value 0.594497
## iter 40 value 0.539049
## iter 50 value 0.447059
## iter 60 value 0.429276
## iter 70 value 0.414371
## iter 80 value 0.404025
## iter 90 value 0.365250
## iter 100 value 0.347975
## final value 0.347975
## stopped after 100 iterations
## # weights: 43
## initial value 126.788478
## iter 10 value 3.829200
## iter 20 value 0.413327
## iter 30 value 0.380911
## iter 40 value 0.340560
## iter 50 value 0.323627
## iter 60 value 0.317587
## iter 70 value 0.313983
## iter 80 value 0.306017
## iter 90 value 0.298843
## iter 100 value 0.291345
## final value 0.291345
## stopped after 100 iterations
## # weights: 11
## initial value 118.786738
## iter 10 value 49.841959
## iter 20 value 44.732264
## iter 30 value 21.869847
## iter 40 value 7.024679
## iter 50 value 3.377067
## iter 60 value 2.614001
## iter 70 value 2.374742
## iter 80 value 2.328305
## iter 90 value 2.183052
## iter 100 value 1.995960
## final value 1.995960
## stopped after 100 iterations
## # weights: 27
## initial value 120.489739
## iter 10 value 10.949300
## iter 20 value 1.053019
## iter 30 value 0.097497
## iter 40 value 0.009433
## iter 50 value 0.002187
## iter 60 value 0.000671
## final value 0.000060
## converged
## # weights: 43
## initial value 119.448380
## iter 10 value 5.070240
## iter 20 value 0.232232
## iter 30 value 0.000362
## final value 0.000062
## converged
## # weights: 11
## initial value 125.426638
## iter 10 value 46.579521
## iter 20 value 43.328804
## iter 30 value 43.303472
## final value 43.303191
## converged
## # weights: 27
## initial value 140.533282
## iter 10 value 23.030031
## iter 20 value 19.586541
## iter 30 value 19.140962
## iter 40 value 19.069036
## iter 50 value 19.068222
## final value 19.068135
## converged
## # weights: 43
## initial value 132.764766
## iter 10 value 21.088755
## iter 20 value 17.883904
## iter 30 value 17.616425
## iter 40 value 17.537716
## iter 50 value 17.536521
## final value 17.536217
## converged
## # weights: 11
## initial value 129.864220
## iter 10 value 50.387818
## iter 20 value 50.003243
## iter 30 value 49.985263
## iter 40 value 49.971965
## iter 50 value 49.963354
## iter 60 value 49.864516
## iter 70 value 47.042847
## iter 80 value 26.937577
## iter 90 value 7.361127
## iter 100 value 3.275166
## final value 3.275166
## stopped after 100 iterations
## # weights: 27
## initial value 122.413392
## iter 10 value 3.280367
## iter 20 value 0.962050
## iter 30 value 0.498602
## iter 40 value 0.431469
## iter 50 value 0.372870
## iter 60 value 0.357209
## iter 70 value 0.349438
## iter 80 value 0.346374
## iter 90 value 0.335182
## iter 100 value 0.326153
## final value 0.326153
## stopped after 100 iterations
## # weights: 43
## initial value 131.938972
## iter 10 value 4.014107
## iter 20 value 0.472003
## iter 30 value 0.418575
## iter 40 value 0.396808
## iter 50 value 0.376177
## iter 60 value 0.366726
## iter 70 value 0.345131
## iter 80 value 0.336998
## iter 90 value 0.328513
## iter 100 value 0.306167
## final value 0.306167
## stopped after 100 iterations
## # weights: 11
## initial value 119.881335
## iter 10 value 48.248965
## iter 20 value 25.707338
## iter 30 value 6.115588
## iter 40 value 3.994234
## iter 50 value 3.623481
## iter 60 value 3.041275
## iter 70 value 2.888658
## iter 80 value 2.761364
## iter 90 value 2.738748
## iter 100 value 2.634360
## final value 2.634360
## stopped after 100 iterations
## # weights: 27
## initial value 142.759022
## iter 10 value 19.824527
## iter 20 value 1.187679
## iter 30 value 0.012708
## final value 0.000076
## converged
## # weights: 43
## initial value 133.111916
## iter 10 value 5.853373
## iter 20 value 0.958177
## iter 30 value 0.000892
## final value 0.000078
## converged
## # weights: 11
## initial value 126.548016
## iter 10 value 60.315731
## iter 20 value 51.485385
## iter 30 value 43.954005
## final value 43.897188
## converged
## # weights: 27
## initial value 127.064911
## iter 10 value 35.240243
## iter 20 value 22.402041
## iter 30 value 21.430369
## iter 40 value 20.352732
## iter 50 value 20.146517
## iter 60 value 20.143305
## final value 20.143299
## converged
## # weights: 43
## initial value 116.645303
## iter 10 value 22.934128
## iter 20 value 18.978812
## iter 30 value 18.533383
## iter 40 value 18.386825
## iter 50 value 18.356200
## iter 60 value 18.354984
## final value 18.354984
## converged
## # weights: 11
## initial value 135.513211
## iter 10 value 50.028984
## iter 20 value 49.965197
## iter 30 value 49.953643
## iter 40 value 49.109838
## iter 50 value 28.321675
## iter 60 value 7.094889
## iter 70 value 3.967483
## iter 80 value 3.930483
## iter 90 value 3.875659
## iter 100 value 3.864669
## final value 3.864669
## stopped after 100 iterations
## # weights: 27
## initial value 142.809627
## iter 10 value 4.841673
## iter 20 value 1.045981
## iter 30 value 0.641301
## iter 40 value 0.596884
## iter 50 value 0.560789
## iter 60 value 0.554687
## iter 70 value 0.544915
## iter 80 value 0.521535
## iter 90 value 0.509914
## iter 100 value 0.500859
## final value 0.500859
## stopped after 100 iterations
## # weights: 43
## initial value 117.174219
## iter 10 value 5.258879
## iter 20 value 0.980980
## iter 30 value 0.667338
## iter 40 value 0.609452
## iter 50 value 0.586610
## iter 60 value 0.564724
## iter 70 value 0.551428
## iter 80 value 0.522849
## iter 90 value 0.515792
## iter 100 value 0.508776
## final value 0.508776
## stopped after 100 iterations
## # weights: 11
## initial value 128.436767
## iter 10 value 30.909283
## iter 20 value 5.485062
## iter 30 value 1.415165
## iter 40 value 1.113543
## iter 50 value 1.032260
## iter 60 value 0.812368
## iter 70 value 0.719568
## iter 80 value 0.591234
## iter 90 value 0.503570
## iter 100 value 0.485743
## final value 0.485743
## stopped after 100 iterations
## # weights: 27
## initial value 124.041425
## iter 10 value 16.372063
## iter 20 value 1.296231
## iter 30 value 0.013963
## iter 40 value 0.000400
## final value 0.000065
## converged
## # weights: 43
## initial value 142.556573
## iter 10 value 6.305027
## iter 20 value 0.022702
## final value 0.000095
## converged
## # weights: 11
## initial value 128.946178
## iter 10 value 64.331589
## iter 20 value 58.278653
## iter 30 value 44.740198
## final value 43.841378
## converged
## # weights: 27
## initial value 121.793053
## iter 10 value 28.036313
## iter 20 value 21.203062
## iter 30 value 20.324519
## iter 40 value 20.323778
## iter 40 value 20.323778
## iter 40 value 20.323778
## final value 20.323778
## converged
## # weights: 43
## initial value 121.002820
## iter 10 value 29.639711
## iter 20 value 18.276970
## iter 30 value 17.679563
## iter 40 value 17.608024
## iter 50 value 17.600567
## final value 17.600541
## converged
## # weights: 11
## initial value 135.886683
## iter 10 value 52.407943
## iter 20 value 49.971430
## iter 30 value 49.967144
## iter 40 value 49.962622
## iter 50 value 49.943524
## iter 60 value 42.748488
## iter 70 value 16.926443
## iter 80 value 4.560136
## iter 90 value 3.207232
## iter 100 value 2.595344
## final value 2.595344
## stopped after 100 iterations
## # weights: 27
## initial value 115.468693
## iter 10 value 13.336875
## iter 20 value 0.486540
## iter 30 value 0.412937
## iter 40 value 0.313896
## iter 50 value 0.255443
## iter 60 value 0.193592
## iter 70 value 0.186985
## iter 80 value 0.175962
## iter 90 value 0.170772
## iter 100 value 0.164352
## final value 0.164352
## stopped after 100 iterations
## # weights: 43
## initial value 137.452003
## iter 10 value 5.397770
## iter 20 value 0.188688
## iter 30 value 0.168500
## iter 40 value 0.161522
## iter 50 value 0.157038
## iter 60 value 0.154105
## iter 70 value 0.150188
## iter 80 value 0.144188
## iter 90 value 0.140014
## iter 100 value 0.136416
## final value 0.136416
## stopped after 100 iterations
## # weights: 11
## initial value 136.024494
## iter 10 value 50.669784
## iter 20 value 49.909573
## iter 30 value 49.906638
## final value 49.906632
## converged
## # weights: 27
## initial value 110.714772
## iter 10 value 6.387096
## iter 20 value 1.862556
## iter 30 value 0.085447
## final value 0.000090
## converged
## # weights: 43
## initial value 147.277630
## iter 10 value 3.881693
## iter 20 value 0.086793
## iter 30 value 0.001743
## iter 40 value 0.000498
## final value 0.000090
## converged
## # weights: 11
## initial value 121.449567
## iter 10 value 60.521984
## iter 20 value 46.522243
## iter 30 value 43.422579
## final value 43.422577
## converged
## # weights: 27
## initial value 128.568960
## iter 10 value 26.286577
## iter 20 value 20.777713
## iter 30 value 20.568498
## final value 20.568451
## converged
## # weights: 43
## initial value 127.362196
## iter 10 value 24.640743
## iter 20 value 19.259020
## iter 30 value 18.518870
## iter 40 value 18.421764
## iter 50 value 18.396142
## iter 60 value 18.395468
## final value 18.395464
## converged
## # weights: 11
## initial value 123.476755
## iter 10 value 40.877866
## iter 20 value 8.822057
## iter 30 value 4.783950
## iter 40 value 4.134686
## iter 50 value 3.851969
## iter 60 value 3.581962
## iter 70 value 3.575307
## iter 80 value 3.570929
## iter 90 value 3.564414
## iter 100 value 3.557460
## final value 3.557460
## stopped after 100 iterations
## # weights: 27
## initial value 143.079931
## iter 10 value 39.521914
## iter 20 value 21.456893
## iter 30 value 9.023796
## iter 40 value 2.099469
## iter 50 value 0.824288
## iter 60 value 0.697961
## iter 70 value 0.611558
## iter 80 value 0.558900
## iter 90 value 0.505761
## iter 100 value 0.471618
## final value 0.471618
## stopped after 100 iterations
## # weights: 43
## initial value 130.065549
## iter 10 value 5.452054
## iter 20 value 1.774891
## iter 30 value 0.383319
## iter 40 value 0.334483
## iter 50 value 0.283787
## iter 60 value 0.262908
## iter 70 value 0.248293
## iter 80 value 0.240566
## iter 90 value 0.233568
## iter 100 value 0.229540
## final value 0.229540
## stopped after 100 iterations
## # weights: 11
## initial value 134.586120
## iter 10 value 50.686947
## iter 20 value 46.796898
## final value 46.796573
## converged
resultado_entrenamiento6 <- predict(modelo6, entrenamiento)
resultado_prueba6 <- predict(modelo6, prueba)
# Matriz de confusión
# Es una tabla de evaluación que desglosa el rendimiento del modelo de clasificación
# Matriz de Confusión del Resultado del Entrenamiento
mcre6 <- confusionMatrix(resultado_entrenamiento6, entrenamiento$Species)
mcre6
## Confusion Matrix and Statistics
##
## Reference
## Prediction setosa versicolor virginica
## setosa 40 0 0
## versicolor 0 36 0
## virginica 0 4 40
##
## 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.9000 1.0000
## Specificity 1.0000 1.0000 0.9500
## Pos Pred Value 1.0000 1.0000 0.9091
## Neg Pred Value 1.0000 0.9524 1.0000
## Prevalence 0.3333 0.3333 0.3333
## Detection Rate 0.3333 0.3000 0.3333
## Detection Prevalence 0.3333 0.3000 0.3667
## Balanced Accuracy 1.0000 0.9500 0.9750
# Matriz de Confusión del Resultado de la Prueba
mcrp6 <- confusionMatrix(resultado_prueba6, prueba$Species)
mcrp6
## Confusion Matrix and Statistics
##
## Reference
## Prediction setosa versicolor virginica
## setosa 10 0 0
## versicolor 0 9 0
## virginica 0 1 10
##
## 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 0.9000 1.0000
## Specificity 1.0000 1.0000 0.9500
## Pos Pred Value 1.0000 1.0000 0.9091
## Neg Pred Value 1.0000 0.9524 1.0000
## Prevalence 0.3333 0.3333 0.3333
## Detection Rate 0.3333 0.3000 0.3333
## Detection Prevalence 0.3333 0.3000 0.3667
## Balanced Accuracy 1.0000 0.9500 0.9750
resultados <- data.frame(
"svmLinear"=c(mcre1$overall["Accuracy"], mcrp1$overall["Accuracy"]),
"svmRadial"=c(mcre2$overall["Accuracy"], mcrp2$overall["Accuracy"]),
"svmPoly"=c(mcre3$overall["Accuracy"], mcrp3$overall["Accuracy"]),
"rpart"=c(mcre4$overall["Accuracy"], mcrp4$overall["Accuracy"]),
"rf"=c(mcre5$overall["Accuracy"], mcrp5$overall["Accuracy"]),
"nnet"=c(mcre6$overall["Accuracy"], mcrp6$overall["Accuracy"])
)
rownames(resultados)<- c("Exactitud de Entrenamiento", "Exactitud de la Prueba")
resultados
## svmLinear svmRadial svmPoly rpart rf
## Exactitud de Entrenamiento 0.9916667 0.9916667 0.9666667 0.9666667 1.0000000
## Exactitud de la Prueba 0.9666667 0.9333333 0.9333333 0.9333333 0.9333333
## nnet
## Exactitud de Entrenamiento 0.9666667
## Exactitud de la Prueba 0.9666667
En Conclusión, el modelo de Redes Neuronales es el recomendado para la clasificación de Lirios.