El paquete CARET (Classification And Regression Training) es un paquete integral con una amplia variedad de algoritmos para el aprendizaje automático
#install.packages("ggplot2") #Gráficas
library(ggplot2)
#install.packages("lattice") #crear gráficoas
library(lattice)
#install.packages("caret") #Algoritmos de aprendizaje automático
library(caret)
#install.packages("datasets") #Usar bases de datos, en este casi Iris
library(datasets)
#install.packages("DataExplorer") #Análisis exploratorio
library(DataExplorer)
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: La variable que queremos predecir debe tener formato de
FACTOR
#NORMALMENTE 80-20
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"),
trContol = 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 resultadon 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"),
trContol = 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 resultadon 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"),
trContol = 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 resultadon del entrenamiento
mcre3 <- confusionMatrix(resultado_entrenamiento3, entrenamiento$Species)
mcre3
## Confusion Matrix and Statistics
##
## Reference
## Prediction setosa versicolor virginica
## setosa 40 0 0
## versicolor 0 39 1
## virginica 0 1 39
##
## Overall Statistics
##
## Accuracy : 0.9833
## 95% CI : (0.9411, 0.998)
## No Information Rate : 0.3333
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 0.975
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: setosa Class: versicolor Class: virginica
## Sensitivity 1.0000 0.9750 0.9750
## Specificity 1.0000 0.9875 0.9875
## Pos Pred Value 1.0000 0.9750 0.9750
## Neg Pred Value 1.0000 0.9875 0.9875
## Prevalence 0.3333 0.3333 0.3333
## Detection Rate 0.3333 0.3250 0.3250
## Detection Prevalence 0.3333 0.3333 0.3333
## Balanced Accuracy 1.0000 0.9812 0.9812
#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 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
modelo4 <- train(Species ~ ., data=entrenamiento,
method = "rpart", #Cambiar
preProcess = c("scale","center"),
trControl = trainControl(method = "cv", number=10),
tuneLength =10 #Cambiar hiperparametros, se pueden justar
)
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
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 = "nnet", #Cambiar
preProcess = c("scale","center"),
trControl = trainControl(method = "cv", number=10)
)
## # weights: 11
## initial value 114.109623
## iter 10 value 45.828563
## iter 20 value 9.079013
## iter 30 value 4.971410
## iter 40 value 3.325076
## iter 50 value 2.324741
## iter 60 value 2.120862
## iter 70 value 1.736362
## iter 80 value 1.707422
## iter 90 value 1.570408
## iter 100 value 1.556071
## final value 1.556071
## stopped after 100 iterations
## # weights: 27
## initial value 139.114470
## iter 10 value 4.329844
## iter 20 value 0.137561
## iter 30 value 0.000304
## final value 0.000076
## converged
## # weights: 43
## initial value 157.720054
## iter 10 value 20.358701
## iter 20 value 2.764708
## iter 30 value 0.068068
## iter 40 value 0.003367
## iter 50 value 0.000204
## final value 0.000076
## converged
## # weights: 11
## initial value 124.184254
## iter 10 value 54.114798
## iter 20 value 43.846499
## final value 43.846172
## converged
## # weights: 27
## initial value 138.358541
## iter 10 value 30.805831
## iter 20 value 22.240424
## iter 30 value 22.174928
## iter 40 value 21.635498
## iter 50 value 20.423106
## iter 60 value 20.237299
## iter 70 value 20.229187
## final value 20.229178
## converged
## # weights: 43
## initial value 136.335479
## iter 10 value 24.411557
## iter 20 value 19.593368
## iter 30 value 19.257034
## iter 40 value 19.242614
## iter 50 value 19.241833
## final value 19.241690
## converged
## # weights: 11
## initial value 121.983814
## iter 10 value 29.764557
## iter 20 value 4.793835
## iter 30 value 4.140823
## iter 40 value 3.941941
## iter 50 value 3.915344
## iter 60 value 3.885919
## iter 70 value 3.864240
## iter 80 value 3.864129
## iter 90 value 3.863498
## iter 100 value 3.863083
## final value 3.863083
## stopped after 100 iterations
## # weights: 27
## initial value 134.704284
## iter 10 value 10.202539
## iter 20 value 1.378574
## iter 30 value 0.615712
## iter 40 value 0.595992
## iter 50 value 0.541999
## iter 60 value 0.522479
## iter 70 value 0.508242
## iter 80 value 0.494808
## iter 90 value 0.485988
## iter 100 value 0.483150
## final value 0.483150
## stopped after 100 iterations
## # weights: 43
## initial value 134.256561
## iter 10 value 5.895771
## iter 20 value 0.878393
## iter 30 value 0.414096
## iter 40 value 0.409300
## iter 50 value 0.391384
## iter 60 value 0.372698
## iter 70 value 0.360924
## iter 80 value 0.349824
## iter 90 value 0.337093
## iter 100 value 0.333465
## final value 0.333465
## stopped after 100 iterations
## # weights: 11
## initial value 124.927207
## iter 10 value 48.680119
## iter 20 value 43.764160
## iter 30 value 9.833138
## iter 40 value 3.861079
## iter 50 value 3.007637
## iter 60 value 2.112234
## iter 70 value 1.015477
## iter 80 value 0.660291
## iter 90 value 0.584209
## iter 100 value 0.557918
## final value 0.557918
## stopped after 100 iterations
## # weights: 27
## initial value 106.009100
## iter 10 value 3.267265
## iter 20 value 0.011976
## iter 30 value 0.000721
## final value 0.000079
## converged
## # weights: 43
## initial value 132.750055
## iter 10 value 3.175584
## iter 20 value 0.010245
## final value 0.000079
## converged
## # weights: 11
## initial value 135.102481
## iter 10 value 48.711066
## iter 20 value 43.644842
## iter 30 value 43.642246
## final value 43.642244
## converged
## # weights: 27
## initial value 133.300307
## iter 10 value 35.461288
## iter 20 value 22.165793
## iter 30 value 21.425419
## iter 40 value 20.627546
## iter 50 value 20.263763
## iter 60 value 20.262023
## final value 20.262020
## converged
## # weights: 43
## initial value 109.402261
## iter 10 value 20.902262
## iter 20 value 17.916111
## iter 30 value 17.682265
## iter 40 value 17.481388
## iter 50 value 17.444235
## iter 60 value 17.443763
## final value 17.443763
## converged
## # weights: 11
## initial value 129.154732
## iter 10 value 49.976791
## iter 20 value 48.672006
## iter 30 value 45.423891
## iter 40 value 44.522174
## iter 50 value 21.617067
## iter 60 value 5.215792
## iter 70 value 3.029068
## iter 80 value 2.694033
## iter 90 value 2.129327
## iter 100 value 2.085723
## final value 2.085723
## stopped after 100 iterations
## # weights: 27
## initial value 128.146901
## iter 10 value 12.883639
## iter 20 value 0.503141
## iter 30 value 0.440506
## iter 40 value 0.334361
## iter 50 value 0.255176
## iter 60 value 0.231650
## iter 70 value 0.212976
## iter 80 value 0.196930
## iter 90 value 0.160894
## iter 100 value 0.153569
## final value 0.153569
## stopped after 100 iterations
## # weights: 43
## initial value 124.582026
## iter 10 value 2.754725
## iter 20 value 0.311086
## iter 30 value 0.290474
## iter 40 value 0.256366
## iter 50 value 0.197351
## iter 60 value 0.188947
## iter 70 value 0.175049
## iter 80 value 0.170877
## iter 90 value 0.167614
## iter 100 value 0.163811
## final value 0.163811
## stopped after 100 iterations
## # weights: 11
## initial value 112.574553
## iter 10 value 16.086369
## iter 20 value 1.127724
## iter 30 value 0.070220
## iter 40 value 0.052693
## iter 50 value 0.027831
## iter 60 value 0.020153
## iter 70 value 0.013655
## iter 80 value 0.013056
## iter 90 value 0.012208
## iter 100 value 0.012127
## final value 0.012127
## stopped after 100 iterations
## # weights: 27
## initial value 123.458121
## iter 10 value 2.642483
## iter 20 value 0.013165
## final value 0.000069
## converged
## # weights: 43
## initial value 139.091729
## iter 10 value 2.160891
## iter 20 value 0.003282
## iter 30 value 0.000126
## final value 0.000080
## converged
## # weights: 11
## initial value 130.252323
## iter 10 value 45.484341
## iter 20 value 42.749013
## final value 42.748850
## converged
## # weights: 27
## initial value 127.386067
## iter 10 value 25.679985
## iter 20 value 21.366719
## iter 30 value 21.328831
## iter 40 value 21.322845
## iter 50 value 21.151629
## iter 60 value 20.119498
## final value 20.115812
## converged
## # weights: 43
## initial value 150.263239
## iter 10 value 23.067220
## iter 20 value 17.832665
## iter 30 value 17.464610
## iter 40 value 17.344079
## iter 50 value 17.324985
## iter 60 value 17.322956
## final value 17.322939
## converged
## # weights: 11
## initial value 133.419233
## iter 10 value 49.541541
## iter 20 value 47.947261
## iter 30 value 47.263169
## iter 40 value 43.915176
## iter 50 value 35.608322
## iter 60 value 9.531218
## iter 70 value 3.590051
## iter 80 value 2.722956
## iter 90 value 1.943896
## iter 100 value 1.935777
## final value 1.935777
## stopped after 100 iterations
## # weights: 27
## initial value 139.743767
## iter 10 value 12.605931
## iter 20 value 0.365580
## iter 30 value 0.347059
## iter 40 value 0.323069
## iter 50 value 0.274982
## iter 60 value 0.253399
## iter 70 value 0.240675
## iter 80 value 0.213971
## iter 90 value 0.185739
## iter 100 value 0.167358
## final value 0.167358
## stopped after 100 iterations
## # weights: 43
## initial value 116.074870
## iter 10 value 7.050705
## iter 20 value 0.285352
## iter 30 value 0.257600
## iter 40 value 0.222784
## iter 50 value 0.195658
## iter 60 value 0.168249
## iter 70 value 0.156169
## iter 80 value 0.138017
## iter 90 value 0.135075
## iter 100 value 0.130354
## final value 0.130354
## stopped after 100 iterations
## # weights: 11
## initial value 129.219899
## iter 10 value 51.373152
## iter 20 value 49.908995
## final value 49.906753
## converged
## # weights: 27
## initial value 120.091089
## iter 10 value 6.603062
## iter 20 value 0.026764
## final value 0.000061
## converged
## # weights: 43
## initial value 123.728451
## iter 10 value 4.801734
## iter 20 value 0.039155
## iter 30 value 0.000226
## final value 0.000070
## converged
## # weights: 11
## initial value 118.993896
## iter 10 value 64.152682
## iter 20 value 55.569463
## iter 30 value 44.068382
## final value 43.908374
## converged
## # weights: 27
## initial value 119.950600
## iter 10 value 28.428204
## iter 20 value 20.188866
## iter 30 value 19.770305
## iter 40 value 19.726999
## final value 19.726966
## converged
## # weights: 43
## initial value 126.096589
## iter 10 value 28.247839
## iter 20 value 19.345172
## iter 30 value 18.312394
## iter 40 value 18.163433
## iter 50 value 18.037051
## iter 60 value 17.896710
## iter 70 value 17.855436
## iter 80 value 17.846178
## final value 17.846136
## converged
## # weights: 11
## initial value 119.430385
## iter 10 value 53.730648
## iter 20 value 47.239603
## iter 30 value 23.897669
## iter 40 value 6.704752
## iter 50 value 4.457121
## iter 60 value 4.153060
## iter 70 value 3.678133
## iter 80 value 3.341161
## iter 90 value 3.278779
## iter 100 value 3.277943
## final value 3.277943
## stopped after 100 iterations
## # weights: 27
## initial value 132.324727
## iter 10 value 16.886915
## iter 20 value 1.513561
## iter 30 value 0.573764
## iter 40 value 0.516440
## iter 50 value 0.478987
## iter 60 value 0.439664
## iter 70 value 0.406696
## iter 80 value 0.367257
## iter 90 value 0.342586
## iter 100 value 0.336179
## final value 0.336179
## stopped after 100 iterations
## # weights: 43
## initial value 106.618681
## iter 10 value 6.111470
## iter 20 value 0.743247
## iter 30 value 0.442626
## iter 40 value 0.427963
## iter 50 value 0.409000
## iter 60 value 0.401314
## iter 70 value 0.387625
## iter 80 value 0.355552
## iter 90 value 0.347139
## iter 100 value 0.328937
## final value 0.328937
## stopped after 100 iterations
## # weights: 11
## initial value 118.757399
## iter 10 value 20.776647
## iter 20 value 4.323354
## iter 30 value 3.179499
## iter 40 value 2.898875
## iter 50 value 2.812313
## iter 60 value 2.724459
## iter 70 value 2.091876
## iter 80 value 2.019732
## iter 90 value 1.924682
## iter 100 value 1.903984
## final value 1.903984
## stopped after 100 iterations
## # weights: 27
## initial value 119.831118
## iter 10 value 17.037938
## iter 20 value 2.022554
## iter 30 value 0.001992
## final value 0.000097
## converged
## # weights: 43
## initial value 152.666457
## iter 10 value 4.599487
## iter 20 value 0.288522
## iter 30 value 0.000507
## final value 0.000095
## converged
## # weights: 11
## initial value 139.665328
## iter 10 value 79.187877
## iter 20 value 55.626312
## iter 30 value 44.041491
## final value 44.032483
## converged
## # weights: 27
## initial value 130.471384
## iter 10 value 25.286397
## iter 20 value 20.299901
## iter 30 value 20.264751
## final value 20.264258
## converged
## # weights: 43
## initial value 156.762933
## iter 10 value 22.738500
## iter 20 value 18.942193
## iter 30 value 18.651497
## iter 40 value 18.541216
## iter 50 value 18.492579
## iter 60 value 18.492419
## iter 60 value 18.492419
## iter 60 value 18.492419
## final value 18.492419
## converged
## # weights: 11
## initial value 130.272017
## iter 10 value 50.765912
## iter 20 value 48.582618
## iter 30 value 45.966204
## iter 40 value 45.903361
## iter 50 value 45.879992
## iter 60 value 45.650444
## iter 70 value 45.165395
## iter 80 value 45.116943
## iter 90 value 45.046789
## iter 100 value 42.562388
## final value 42.562388
## stopped after 100 iterations
## # weights: 27
## initial value 113.815666
## iter 10 value 5.301574
## iter 20 value 1.571575
## iter 30 value 0.883859
## iter 40 value 0.812207
## iter 50 value 0.731080
## iter 60 value 0.650493
## iter 70 value 0.607689
## iter 80 value 0.557375
## iter 90 value 0.540423
## iter 100 value 0.525700
## final value 0.525700
## stopped after 100 iterations
## # weights: 43
## initial value 182.751934
## iter 10 value 19.350295
## iter 20 value 1.711168
## iter 30 value 0.511460
## iter 40 value 0.469349
## iter 50 value 0.420543
## iter 60 value 0.398203
## iter 70 value 0.332761
## iter 80 value 0.312241
## iter 90 value 0.294528
## iter 100 value 0.271370
## final value 0.271370
## stopped after 100 iterations
## # weights: 11
## initial value 125.448373
## iter 10 value 49.926410
## iter 20 value 49.881822
## iter 30 value 49.201823
## iter 40 value 44.247440
## iter 50 value 25.492740
## iter 60 value 5.194775
## iter 70 value 2.583735
## iter 80 value 2.289023
## iter 90 value 1.068084
## iter 100 value 0.835714
## final value 0.835714
## stopped after 100 iterations
## # weights: 27
## initial value 127.664185
## iter 10 value 13.769859
## iter 20 value 0.492718
## iter 30 value 0.022574
## final value 0.000068
## converged
## # weights: 43
## initial value 110.245332
## iter 10 value 3.437075
## iter 20 value 0.032918
## iter 30 value 0.002791
## iter 40 value 0.000949
## iter 50 value 0.000777
## final value 0.000069
## converged
## # weights: 11
## initial value 132.440323
## iter 10 value 72.508591
## iter 20 value 46.007946
## iter 30 value 42.992074
## final value 42.992070
## converged
## # weights: 27
## initial value 117.767278
## iter 10 value 24.106928
## iter 20 value 18.749636
## iter 30 value 18.652227
## iter 40 value 18.642367
## final value 18.642365
## converged
## # weights: 43
## initial value 128.410770
## iter 10 value 22.342219
## iter 20 value 17.504842
## iter 30 value 16.915932
## iter 40 value 16.822051
## iter 50 value 16.818771
## final value 16.818642
## converged
## # weights: 11
## initial value 121.106246
## iter 10 value 49.784217
## iter 20 value 49.066404
## iter 30 value 48.866674
## iter 40 value 48.805726
## iter 50 value 47.050173
## iter 60 value 45.727742
## iter 70 value 42.793682
## iter 80 value 15.061754
## iter 90 value 4.037777
## iter 100 value 3.518024
## final value 3.518024
## stopped after 100 iterations
## # weights: 27
## initial value 145.696392
## iter 10 value 17.473125
## iter 20 value 0.762785
## iter 30 value 0.212104
## iter 40 value 0.201556
## iter 50 value 0.186255
## iter 60 value 0.178114
## iter 70 value 0.158787
## iter 80 value 0.156356
## iter 90 value 0.153959
## iter 100 value 0.151025
## final value 0.151025
## stopped after 100 iterations
## # weights: 43
## initial value 136.441831
## iter 10 value 3.296600
## iter 20 value 0.237981
## iter 30 value 0.224021
## iter 40 value 0.200991
## iter 50 value 0.188188
## iter 60 value 0.174578
## iter 70 value 0.168430
## iter 80 value 0.154250
## iter 90 value 0.143591
## iter 100 value 0.139183
## final value 0.139183
## stopped after 100 iterations
## # weights: 11
## initial value 120.488230
## iter 10 value 47.569324
## iter 20 value 44.401604
## iter 30 value 34.326978
## iter 40 value 7.154579
## iter 50 value 3.957519
## iter 60 value 3.742646
## iter 70 value 1.874932
## iter 80 value 1.071214
## iter 90 value 1.042372
## iter 100 value 0.986469
## final value 0.986469
## stopped after 100 iterations
## # weights: 27
## initial value 135.817698
## iter 10 value 13.950546
## iter 20 value 1.151586
## iter 30 value 0.031436
## iter 40 value 0.001019
## final value 0.000068
## converged
## # weights: 43
## initial value 140.377939
## iter 10 value 3.971665
## iter 20 value 1.789822
## iter 30 value 0.009645
## final value 0.000065
## converged
## # weights: 11
## initial value 140.126095
## iter 10 value 47.333342
## iter 20 value 42.892884
## final value 42.889689
## converged
## # weights: 27
## initial value 121.803026
## iter 10 value 38.691300
## iter 20 value 19.921144
## iter 30 value 19.433045
## iter 40 value 19.383350
## iter 50 value 19.382633
## final value 19.382632
## converged
## # weights: 43
## initial value 156.386421
## iter 10 value 23.314550
## iter 20 value 18.748706
## iter 30 value 18.494532
## iter 40 value 18.401643
## iter 50 value 18.383610
## iter 60 value 18.374318
## final value 18.374255
## converged
## # weights: 11
## initial value 138.138161
## iter 10 value 10.633699
## iter 20 value 3.856084
## iter 30 value 3.802397
## iter 40 value 3.690227
## iter 50 value 3.688922
## iter 60 value 3.687249
## iter 70 value 3.683205
## iter 80 value 3.683144
## iter 90 value 3.683033
## iter 100 value 3.682732
## final value 3.682732
## stopped after 100 iterations
## # weights: 27
## initial value 140.548399
## iter 10 value 6.301393
## iter 20 value 2.795492
## iter 30 value 1.571451
## iter 40 value 0.907102
## iter 50 value 0.883124
## iter 60 value 0.789401
## iter 70 value 0.729012
## iter 80 value 0.659629
## iter 90 value 0.639191
## iter 100 value 0.617460
## final value 0.617460
## stopped after 100 iterations
## # weights: 43
## initial value 136.614846
## iter 10 value 4.215242
## iter 20 value 1.283187
## iter 30 value 0.489904
## iter 40 value 0.468648
## iter 50 value 0.449015
## iter 60 value 0.430487
## iter 70 value 0.390820
## iter 80 value 0.382614
## iter 90 value 0.368962
## iter 100 value 0.365353
## final value 0.365353
## stopped after 100 iterations
## # weights: 11
## initial value 128.001875
## iter 10 value 50.849579
## iter 20 value 49.908965
## final value 49.906776
## converged
## # weights: 27
## initial value 142.435335
## iter 10 value 21.292905
## iter 20 value 2.931194
## iter 30 value 0.109211
## iter 40 value 0.000269
## final value 0.000065
## converged
## # weights: 43
## initial value 124.336357
## iter 10 value 6.806115
## iter 20 value 1.066310
## iter 30 value 0.027634
## iter 40 value 0.000120
## iter 40 value 0.000064
## iter 40 value 0.000062
## final value 0.000062
## converged
## # weights: 11
## initial value 127.015963
## iter 10 value 73.750364
## iter 20 value 44.486713
## iter 30 value 44.115273
## final value 44.112572
## converged
## # weights: 27
## initial value 146.801472
## iter 10 value 24.261716
## iter 20 value 20.454066
## iter 30 value 19.976360
## iter 40 value 19.900472
## iter 50 value 19.898371
## final value 19.898368
## converged
## # weights: 43
## initial value 140.864658
## iter 10 value 24.103516
## iter 20 value 19.350754
## iter 30 value 18.914754
## iter 40 value 18.399088
## iter 50 value 18.363716
## iter 60 value 18.360857
## final value 18.360836
## converged
## # weights: 11
## initial value 130.436173
## iter 10 value 58.545756
## iter 20 value 54.564282
## iter 30 value 54.279512
## iter 40 value 53.998818
## iter 50 value 53.780071
## iter 60 value 51.779803
## iter 70 value 50.473597
## iter 80 value 50.150863
## iter 90 value 32.066399
## iter 100 value 7.064814
## final value 7.064814
## stopped after 100 iterations
## # weights: 27
## initial value 129.312933
## iter 10 value 4.102054
## iter 20 value 0.721010
## iter 30 value 0.539730
## iter 40 value 0.512533
## iter 50 value 0.452606
## iter 60 value 0.448412
## iter 70 value 0.431627
## iter 80 value 0.410856
## iter 90 value 0.394455
## iter 100 value 0.388833
## final value 0.388833
## stopped after 100 iterations
## # weights: 43
## initial value 148.098515
## iter 10 value 5.298514
## iter 20 value 0.934008
## iter 30 value 0.522757
## iter 40 value 0.506526
## iter 50 value 0.460051
## iter 60 value 0.424670
## iter 70 value 0.384503
## iter 80 value 0.369647
## iter 90 value 0.362809
## iter 100 value 0.356772
## final value 0.356772
## stopped after 100 iterations
## # weights: 11
## initial value 117.850828
## iter 10 value 49.456182
## iter 20 value 22.412910
## iter 30 value 6.937668
## iter 40 value 3.905887
## iter 50 value 3.219377
## iter 60 value 3.055029
## iter 70 value 2.579637
## iter 80 value 2.430111
## iter 90 value 2.312313
## iter 100 value 2.298797
## final value 2.298797
## stopped after 100 iterations
## # weights: 27
## initial value 130.602937
## iter 10 value 5.364860
## iter 20 value 0.018414
## iter 30 value 0.000249
## final value 0.000061
## converged
## # weights: 43
## initial value 146.701299
## iter 10 value 3.763793
## iter 20 value 0.042843
## final value 0.000094
## converged
## # weights: 11
## initial value 120.628984
## iter 10 value 68.063025
## iter 20 value 56.521999
## iter 30 value 43.815180
## final value 43.556889
## converged
## # weights: 27
## initial value 124.230739
## iter 10 value 33.517706
## iter 20 value 22.508053
## iter 30 value 20.889834
## iter 40 value 20.847738
## final value 20.847700
## converged
## # weights: 43
## initial value 133.602839
## iter 10 value 23.347254
## iter 20 value 18.544964
## iter 30 value 18.040712
## iter 40 value 18.025128
## iter 50 value 18.024592
## iter 60 value 18.024449
## iter 60 value 18.024448
## iter 60 value 18.024448
## final value 18.024448
## converged
## # weights: 11
## initial value 129.177368
## iter 10 value 52.335766
## iter 20 value 50.198664
## iter 30 value 50.141478
## iter 40 value 50.102850
## iter 50 value 49.957183
## iter 60 value 49.952575
## iter 70 value 49.943436
## iter 80 value 49.894847
## iter 90 value 47.945873
## iter 100 value 30.729753
## final value 30.729753
## stopped after 100 iterations
## # weights: 27
## initial value 126.869884
## iter 10 value 4.567751
## iter 20 value 0.927957
## iter 30 value 0.897610
## iter 40 value 0.741713
## iter 50 value 0.619617
## iter 60 value 0.608233
## iter 70 value 0.574205
## iter 80 value 0.564730
## iter 90 value 0.505764
## iter 100 value 0.499667
## final value 0.499667
## stopped after 100 iterations
## # weights: 43
## initial value 136.128035
## iter 10 value 8.773562
## iter 20 value 1.580722
## iter 30 value 0.648186
## iter 40 value 0.598990
## iter 50 value 0.528695
## iter 60 value 0.471326
## iter 70 value 0.428117
## iter 80 value 0.410081
## iter 90 value 0.398805
## iter 100 value 0.383512
## final value 0.383512
## stopped after 100 iterations
## # weights: 11
## initial value 128.896484
## iter 10 value 50.708111
## iter 20 value 49.907586
## final value 49.906660
## converged
## # weights: 27
## initial value 119.521581
## iter 10 value 7.183241
## iter 20 value 0.809670
## iter 30 value 0.004390
## iter 40 value 0.000227
## final value 0.000059
## converged
## # weights: 43
## initial value 131.041089
## iter 10 value 5.393352
## iter 20 value 0.555977
## iter 30 value 0.000400
## final value 0.000061
## converged
## # weights: 11
## initial value 115.254409
## iter 10 value 46.146438
## iter 20 value 43.980539
## final value 43.980528
## converged
## # weights: 27
## initial value 151.251154
## iter 10 value 33.640164
## iter 20 value 21.669957
## iter 30 value 21.347848
## iter 40 value 21.321639
## final value 21.321020
## converged
## # weights: 43
## initial value 118.245016
## iter 10 value 24.475559
## iter 20 value 18.804736
## iter 30 value 18.712983
## iter 40 value 18.677082
## iter 50 value 18.532570
## iter 60 value 18.510662
## iter 70 value 18.509807
## final value 18.509805
## converged
## # weights: 11
## initial value 119.683126
## iter 10 value 50.076985
## iter 20 value 50.003397
## iter 30 value 49.976779
## iter 40 value 49.971048
## iter 50 value 49.955252
## iter 60 value 49.951357
## iter 70 value 49.942062
## iter 80 value 49.398522
## iter 90 value 46.003338
## iter 100 value 27.767723
## final value 27.767723
## stopped after 100 iterations
## # weights: 27
## initial value 159.588882
## iter 10 value 20.390703
## iter 20 value 1.967470
## iter 30 value 0.729399
## iter 40 value 0.662707
## iter 50 value 0.596144
## iter 60 value 0.573053
## iter 70 value 0.560158
## iter 80 value 0.521422
## iter 90 value 0.510398
## iter 100 value 0.493555
## final value 0.493555
## stopped after 100 iterations
## # weights: 43
## initial value 150.242971
## iter 10 value 8.154992
## iter 20 value 2.016351
## iter 30 value 0.620429
## iter 40 value 0.546167
## iter 50 value 0.472008
## iter 60 value 0.453045
## iter 70 value 0.437417
## iter 80 value 0.406533
## iter 90 value 0.393732
## iter 100 value 0.368437
## final value 0.368437
## stopped after 100 iterations
## # weights: 11
## initial value 133.040279
## iter 10 value 61.370169
## iter 20 value 46.727701
## iter 30 value 46.598174
## final value 46.598156
## converged
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 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
modelo6 <- train(Species ~ ., data = entrenamiento,
method = "rf", #Cambiar
preProcess = c("scale", "center"),
trContol = trainControl(method="cv", number=10),
tuneGrid =
#Cambiar
)
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 resultadon del entrenamiento
mcre6 <- confusionMatrix(resultado_entrenamiento6, entrenamiento$Species)
mcre6
## 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
mcrp6 <- confusionMatrix(resultado_prueba6, prueba$Species)
mcrp6
## 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
resultados <-data.frame(
"svmLinear" = c(mcre1$overall["Accuracy"], mcrp1$overall["Accuracy"]),
"svmRadial" = c(mcre2$overall["Accuracy"], mcrp2$overall["Accuracy"]),
"svmPoly" = c(mcre3$overall["Accuracy"], mcrp3$overall["Accuracy"]),
"rpart" = c(mcre4$overall["Accuracy"], mcrp4$overall["Accuracy"]),
#"nnet" = c(mcre5$overall["Accuracy"], mcrp5$overall["Accuracy"]),
"rf" = c(mcre6$overall["Accuracy"], mcrp6$overall["Accuracy"])
)
rownames(resultados) <- c("Precisión de entrenamiento", "Precisión de prueba")
resultados
## svmLinear svmRadial svmPoly rpart rf
## Precisión de entrenamiento 0.9916667 0.9916667 0.9833333 0.9666667 1.0000000
## Precisión de prueba 0.9666667 0.9333333 0.9666667 0.9333333 0.9333333
Acorde a la tabla de resultados, observamos que ningún método presenta sobreajuste. Podemos seleccionar el de redes neuronales por su desempeño.