El paquete CARET (Classsiffication And Regression Training) es un paquete integral con una amplia variedad de algoritmos paara el aprendizaje automático.
#install.packages("caret") # Algoritmos de aprendizaje automatico
library(caret)
## Cargando paquete requerido: ggplot2
## Cargando paquete requerido: lattice
#install.packages("ggplot2") # Gá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)
##
## Adjuntando el paquete: 'kernlab'
## The following object is masked from 'package:ggplot2':
##
## alpha
#install.packages("randomForest")
library(randomForest)
## randomForest 4.7-1.2
## Type rfNews() to see new features/changes/bug fixes.
##
## Adjuntando el paquete: 'randomForest'
## The following object is masked from 'package:ggplot2':
##
## margin
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 de tener formato de FACTOR
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",
preProcess = c("scale", "center"),
trControl = trainControl(method = "cv", number = 10),
tuneGrid = data.frame(C = 1)
)
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 clasificaciió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",
preProcess = c("scale", "center"),
trControl = trainControl(method = "cv", number = 10),
tuneGrid = data.frame(sigma=1,C = 1)
)
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 clasificaciió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",
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 clasificaciión
# Matriz de Confusión del Resultado del Entrenamiento
mcre3 <- confusionMatrix(resultado_entrenamiento2, entrenamiento$Species)
mcre3
## 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
mcrp3 <- confusionMatrix(resultado_prueba2, 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", #se cambia metodo para cambiar modelo
preProcess=c("scale", "center"),
trControl= trainControl(method = "CV", number = 10),
tuneLength = 10 #se pueden cambiar parametros
)
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 clasificaciió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", #se cambia metodo para cambiar modelo
preProcess=c("scale", "center"),
trControl= trainControl(method = "CV", number = 10),
tuneGrid = expand.grid(mtry=c(2,4,6)) #se pueden cambiar parametros
)
## 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 de evaluación que desglosa el rendimiento del modelo de clasificaciió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", #se cambia metodo para cambiar modelo
preProcess=c("scale", "center"),
trControl= trainControl(method = "CV", number = 10)
#se pueden cambiar parametros
)
## # 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.052566
## 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.645081
## iter 60 value 1.238349
## iter 70 value 1.133691
## iter 80 value 1.132557
## iter 90 value 1.130055
## 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.716621
## iter 50 value 45.709283
## iter 60 value 44.713428
## iter 70 value 42.940191
## iter 80 value 34.917502
## iter 90 value 7.087606
## iter 100 value 4.308310
## final value 4.308310
## 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.533190
## iter 100 value 2.498345
## final value 2.498345
## 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.718271
## iter 50 value 6.465971
## iter 60 value 4.694267
## iter 70 value 4.406901
## iter 80 value 3.891657
## iter 90 value 3.849284
## iter 100 value 3.846127
## final value 3.846127
## 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.119998
## iter 90 value 0.082535
## iter 100 value 0.077616
## final value 0.077616
## 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.926996
## iter 60 value 4.133286
## iter 70 value 3.518106
## iter 80 value 3.207297
## iter 90 value 3.095080
## iter 100 value 3.055358
## final value 3.055358
## 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.008429
## iter 80 value 0.859333
## iter 90 value 0.597574
## iter 100 value 0.597054
## final value 0.597054
## 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.560753
## 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.573119
## iter 60 value 45.843661
## iter 70 value 45.504682
## iter 80 value 44.466623
## iter 90 value 7.667358
## iter 100 value 5.272321
## final value 5.272321
## 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.558159
## iter 90 value 0.546294
## iter 100 value 0.513834
## final value 0.513834
## 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.711644
## iter 90 value 0.670695
## iter 100 value 0.555544
## final value 0.555544
## 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.568717
## iter 50 value 6.520711
## iter 60 value 4.305208
## iter 70 value 3.579728
## iter 80 value 3.174471
## iter 90 value 2.563701
## iter 100 value 2.379369
## final value 2.379369
## 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.978346
## iter 70 value 52.339345
## iter 80 value 51.485145
## iter 90 value 51.350990
## iter 100 value 50.945315
## final value 50.945315
## 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.681193
## 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.613077
## iter 40 value 6.111401
## iter 50 value 4.751741
## iter 60 value 3.840179
## iter 70 value 3.451763
## iter 80 value 3.254240
## iter 90 value 3.154166
## iter 100 value 3.028360
## final value 3.028360
## 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.632847
## iter 60 value 0.543455
## iter 70 value 0.501641
## iter 80 value 0.458760
## iter 90 value 0.336181
## iter 100 value 0.314372
## final value 0.314372
## 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.450624
## iter 60 value 5.282387
## iter 70 value 3.805584
## iter 80 value 3.684633
## iter 90 value 3.668110
## iter 100 value 3.666966
## final value 3.666966
## 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.331724
## iter 100 value 0.313403
## final value 0.313403
## 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 de evaluación que desglosa el rendimiento del modelo de clasificaciión
#Matriz de confusión del resultado de 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"], mcrp5$overall["Accuracy"]))
rownames(resultados) <- c("Exactitud del Entrenamiento", "Exactitud de la Prueba")
resultados
## svmLinear svmRadial svmPoly rpart rf
## Exactitud del Entrenamiento 0.9916667 0.9916667 0.9916667 0.9666667 1.0000000
## Exactitud de la Prueba 0.9666667 0.9333333 0.9333333 0.9333333 0.9333333
## nnet
## Exactitud del Entrenamiento 0.9666667
## Exactitud de la Prueba 0.9333333
En conclusión, el modelo de Redes Neuronales es el recomendado para(por su simplicidad) para la clasificicación de los lirios.