La función caret (Clasification And Regression Training) es un paquete integral con una amplia variedad de algoritmos para el aprendizaje automático.
#install.packages("caret") # Algoritmos de aprendizaje automático
#install.packages("ggplot2") # Gráficas con mejor diseño
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.1
library(mlbench)
#install.packages("lattice") # Crear gráficos
library(lattice)
## Warning: package 'lattice' was built under R version 4.3.1
#install.packages("datasets") # Usar la base de datos "Iris"
library(datasets)
library(DataExplorer)
## Warning: package 'DataExplorer' was built under R version 4.3.1
library(caret)
data(BreastCancer)
df <- BreastCancer
df$Class <- as.factor(df$Class)
summary(df)
## Id Cl.thickness Cell.size Cell.shape Marg.adhesion
## Length:699 1 :145 1 :384 1 :353 1 :407
## Class :character 5 :130 10 : 67 2 : 59 2 : 58
## Mode :character 3 :108 3 : 52 10 : 58 3 : 58
## 4 : 80 2 : 45 3 : 56 10 : 55
## 10 : 69 4 : 40 4 : 44 4 : 33
## 2 : 50 5 : 30 5 : 34 8 : 25
## (Other):117 (Other): 81 (Other): 95 (Other): 63
## Epith.c.size Bare.nuclei Bl.cromatin Normal.nucleoli Mitoses
## 2 :386 1 :402 2 :166 1 :443 1 :579
## 3 : 72 10 :132 3 :165 10 : 61 2 : 35
## 4 : 48 2 : 30 1 :152 3 : 44 3 : 33
## 1 : 47 5 : 30 7 : 73 2 : 36 10 : 14
## 6 : 41 3 : 28 4 : 40 8 : 24 4 : 12
## 5 : 39 (Other): 61 5 : 34 6 : 22 7 : 9
## (Other): 66 NA's : 16 (Other): 69 (Other): 69 (Other): 17
## Class
## benign :458
## malignant:241
##
##
##
##
##
str(df)
## 'data.frame': 699 obs. of 11 variables:
## $ Id : chr "1000025" "1002945" "1015425" "1016277" ...
## $ Cl.thickness : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 5 5 3 6 4 8 1 2 2 4 ...
## $ Cell.size : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 1 4 1 8 1 10 1 1 1 2 ...
## $ Cell.shape : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 1 4 1 8 1 10 1 2 1 1 ...
## $ Marg.adhesion : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 1 5 1 1 3 8 1 1 1 1 ...
## $ Epith.c.size : Ord.factor w/ 10 levels "1"<"2"<"3"<"4"<..: 2 7 2 3 2 7 2 2 2 2 ...
## $ Bare.nuclei : Factor w/ 10 levels "1","2","3","4",..: 1 10 2 4 1 10 10 1 1 1 ...
## $ Bl.cromatin : Factor w/ 10 levels "1","2","3","4",..: 3 3 3 3 3 9 3 3 1 2 ...
## $ Normal.nucleoli: Factor w/ 10 levels "1","2","3","4",..: 1 2 1 7 1 7 1 1 1 1 ...
## $ Mitoses : Factor w/ 9 levels "1","2","3","4",..: 1 1 1 1 1 1 1 1 5 1 ...
## $ Class : Factor w/ 2 levels "benign","malignant": 1 1 1 1 1 2 1 1 1 1 ...
create_report(df)
##
##
## processing file: report.rmd
##
|
| | 0%
|
|. | 2%
|
|.. | 5% (global_options)
|
|... | 7%
|
|.... | 10% (introduce)
|
|.... | 12%
|
|..... | 14% (plot_intro)
|
|...... | 17%
|
|....... | 19% (data_structure)
|
|........ | 21%
|
|......... | 24% (missing_profile)
|
|.......... | 26%
|
|........... | 29% (univariate_distribution_header)
|
|........... | 31%
|
|............ | 33% (plot_histogram)
|
|............. | 36%
|
|.............. | 38% (plot_density)
|
|............... | 40%
|
|................ | 43% (plot_frequency_bar)
|
|................. | 45%
|
|.................. | 48% (plot_response_bar)
|
|.................. | 50%
|
|................... | 52% (plot_with_bar)
|
|.................... | 55%
|
|..................... | 57% (plot_normal_qq)
|
|...................... | 60%
|
|....................... | 62% (plot_response_qq)
|
|........................ | 64%
|
|......................... | 67% (plot_by_qq)
|
|.......................... | 69%
|
|.......................... | 71% (correlation_analysis)
|
|........................... | 74%
|
|............................ | 76% (principal_component_analysis)
|
|............................. | 79%
|
|.............................. | 81% (bivariate_distribution_header)
|
|............................... | 83%
|
|................................ | 86% (plot_response_boxplot)
|
|................................. | 88%
|
|................................. | 90% (plot_by_boxplot)
|
|.................................. | 93%
|
|................................... | 95% (plot_response_scatterplot)
|
|.................................... | 98%
|
|.....................................| 100% (plot_by_scatterplot)
## output file: /Users/genarorodriguezalcantara/Desktop/Tec/AI - Concentración/Módulo 2 - Machine Learning/Code/report.knit.md
## /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/pandoc +RTS -K512m -RTS '/Users/genarorodriguezalcantara/Desktop/Tec/AI - Concentración/Módulo 2 - Machine Learning/Code/report.knit.md' --to html4 --from markdown+autolink_bare_uris+tex_math_single_backslash --output pandoc1862f30a1deec.html --lua-filter /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/rmarkdown/rmarkdown/lua/pagebreak.lua --lua-filter /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/rmarkdown/rmarkdown/lua/latex-div.lua --embed-resources --standalone --variable bs3=TRUE --section-divs --table-of-contents --toc-depth 6 --template /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/library/rmarkdown/rmd/h/default.html --no-highlight --variable highlightjs=1 --variable theme=yeti --mathjax --variable 'mathjax-url=https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML' --include-in-header /var/folders/p_/5232mt8908lbs1jpmzyjh8kh0000gn/T//Rtmpc6BbLJ/rmarkdown-str1862fda0b079.html
##
## Output created: report.html
plot_missing(df)
#plot_histogram(df)
plot_correlation(df)
## 1 features with more than 20 categories ignored!
## Id: 645 categories
** Nota: La variable que queremos predecir debe tener formato de FACTOR**
# Eliminar la columna ID del data frame df
df <- df[, !names(df) %in% "Id"]
set.seed(123)
renglones_entrenamiento <- createDataPartition(df$Class, p = 0.8, list = FALSE)
entrenamiento <- df[renglones_entrenamiento, ]
prueba <- df[-renglones_entrenamiento, ]
# Verificar si hay valores faltantes en el conjunto de entrenamiento
anyNA(entrenamiento)
## [1] TRUE
sum(is.na(entrenamiento))
## [1] 12
# Eliminar filas con valores faltantes
entrenamiento <- na.omit(entrenamiento)
prueba <- na.omit(entrenamiento)
Los métodos más utilizados para moelar aprendizaje automático son:
SVM: Support Vector Machine o Máquina de Vectores de Soporte. Hay varios subtipos: Linea (svmLineal)m Radial (svmRadial), Polinómico (svmPoly), etc.
Árbol de Decisión: rpart
Redes Neuronales: nnet
Random Forest o Bosques Aleatorios: rf
# Define la cuadrícula de sintonización para el parámetro C
# Define la cuadrícula de sintonización para el parámetro C
tuneGrid <- expand.grid(C = c(0.1, 1, 10, 100))
# Entrenamiento del modelo
modelo <- train(Class ~ .,
data = entrenamiento,
method = "svmLinear",
preProcess = c("scale", "center"),
trControl = trainControl(method = "cv", number = 10),
tuneGrid = tuneGrid
)
# Predicción en datos de entrenamiento y prueba
resultado_entrenamiento <- predict(modelo, entrenamiento)
resultado_prueba <- predict(modelo, prueba)
# Matriz de Confusión
mcre <- confusionMatrix(resultado_entrenamiento, entrenamiento$Class)
mcre
## Confusion Matrix and Statistics
##
## Reference
## Prediction benign malignant
## benign 357 3
## malignant 0 188
##
## Accuracy : 0.9945
## 95% CI : (0.9841, 0.9989)
## No Information Rate : 0.6515
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.9879
##
## Mcnemar's Test P-Value : 0.2482
##
## Sensitivity : 1.0000
## Specificity : 0.9843
## Pos Pred Value : 0.9917
## Neg Pred Value : 1.0000
## Prevalence : 0.6515
## Detection Rate : 0.6515
## Detection Prevalence : 0.6569
## Balanced Accuracy : 0.9921
##
## 'Positive' Class : benign
##
mcrp <- confusionMatrix(resultado_prueba, prueba$Class)
mcrp
## Confusion Matrix and Statistics
##
## Reference
## Prediction benign malignant
## benign 357 3
## malignant 0 188
##
## Accuracy : 0.9945
## 95% CI : (0.9841, 0.9989)
## No Information Rate : 0.6515
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.9879
##
## Mcnemar's Test P-Value : 0.2482
##
## Sensitivity : 1.0000
## Specificity : 0.9843
## Pos Pred Value : 0.9917
## Neg Pred Value : 1.0000
## Prevalence : 0.6515
## Detection Rate : 0.6515
## Detection Prevalence : 0.6569
## Balanced Accuracy : 0.9921
##
## 'Positive' Class : benign
##
# Define la cuadrícula de sintonización para los parámetros sigma y C
tuneGrid <- expand.grid(sigma = 0.1, C = 1)
# Entrenamiento del modelo
model2 <- train(Class ~ .,
data = entrenamiento,
method = "svmRadial",
preProcess = c("scale", "center"),
trControl = trainControl(method = "cv", number = 10),
tuneGrid = tuneGrid
)
# Predicción en datos de entrenamiento y prueba
resultado_entrenamiento2 <- predict(model2, entrenamiento)
resultado_prueba2 <- predict(model2, prueba)
# Matriz de Confusión
mcre2 <- confusionMatrix(resultado_entrenamiento, entrenamiento$Class)
mcre2
## Confusion Matrix and Statistics
##
## Reference
## Prediction benign malignant
## benign 357 3
## malignant 0 188
##
## Accuracy : 0.9945
## 95% CI : (0.9841, 0.9989)
## No Information Rate : 0.6515
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.9879
##
## Mcnemar's Test P-Value : 0.2482
##
## Sensitivity : 1.0000
## Specificity : 0.9843
## Pos Pred Value : 0.9917
## Neg Pred Value : 1.0000
## Prevalence : 0.6515
## Detection Rate : 0.6515
## Detection Prevalence : 0.6569
## Balanced Accuracy : 0.9921
##
## 'Positive' Class : benign
##
mcrp2 <- confusionMatrix(resultado_prueba, prueba$Class)
mcrp2
## Confusion Matrix and Statistics
##
## Reference
## Prediction benign malignant
## benign 357 3
## malignant 0 188
##
## Accuracy : 0.9945
## 95% CI : (0.9841, 0.9989)
## No Information Rate : 0.6515
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.9879
##
## Mcnemar's Test P-Value : 0.2482
##
## Sensitivity : 1.0000
## Specificity : 0.9843
## Pos Pred Value : 0.9917
## Neg Pred Value : 1.0000
## Prevalence : 0.6515
## Detection Rate : 0.6515
## Detection Prevalence : 0.6569
## Balanced Accuracy : 0.9921
##
## 'Positive' Class : benign
##
# Define la cuadrícula de sintonización para los parámetros degree, scale y C
tuneGrid <- expand.grid(degree = 1, scale = 1, C = 1)
# Entrenamiento del modelo
model3 <- train(Class ~ .,
data = entrenamiento,
method = "svmPoly",
preProcess = c("scale", "center"),
trControl = trainControl(method = "cv", number = 10),
tuneGrid = tuneGrid
)
# Predicción en datos de entrenamiento y prueba
resultado_entrenamiento3 <- predict(model3, entrenamiento)
resultado_prueba3 <- predict(model3, prueba)
# Matriz de Confusión
mcre3 <- confusionMatrix(resultado_entrenamiento, entrenamiento$Class)
mcre3
## Confusion Matrix and Statistics
##
## Reference
## Prediction benign malignant
## benign 357 3
## malignant 0 188
##
## Accuracy : 0.9945
## 95% CI : (0.9841, 0.9989)
## No Information Rate : 0.6515
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.9879
##
## Mcnemar's Test P-Value : 0.2482
##
## Sensitivity : 1.0000
## Specificity : 0.9843
## Pos Pred Value : 0.9917
## Neg Pred Value : 1.0000
## Prevalence : 0.6515
## Detection Rate : 0.6515
## Detection Prevalence : 0.6569
## Balanced Accuracy : 0.9921
##
## 'Positive' Class : benign
##
mcrp3 <- confusionMatrix(resultado_prueba, prueba$Class)
mcrp3
## Confusion Matrix and Statistics
##
## Reference
## Prediction benign malignant
## benign 357 3
## malignant 0 188
##
## Accuracy : 0.9945
## 95% CI : (0.9841, 0.9989)
## No Information Rate : 0.6515
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.9879
##
## Mcnemar's Test P-Value : 0.2482
##
## Sensitivity : 1.0000
## Specificity : 0.9843
## Pos Pred Value : 0.9917
## Neg Pred Value : 1.0000
## Prevalence : 0.6515
## Detection Rate : 0.6515
## Detection Prevalence : 0.6569
## Balanced Accuracy : 0.9921
##
## 'Positive' Class : benign
##
# Define la cuadrícula de sintonización para el parámetro cp
#tuneGrid <- expand.grid(cp = 0.01)
# Entrenamiento del modelo
model4 <- train(Class ~ .,
data = entrenamiento,
method = "rpart",
preProcess = c("scale", "center"),
trControl = trainControl(method = "cv", number = 10),
tuneLength =
)
# Predicción en datos de entrenamiento y prueba
resultado_entrenamiento4 <- predict(model4, entrenamiento)
resultado_prueba4 <- predict(model4, prueba)
# Matriz de Confusión
mcre4 <- confusionMatrix(resultado_entrenamiento, entrenamiento$Class)
mcre4
## Confusion Matrix and Statistics
##
## Reference
## Prediction benign malignant
## benign 357 3
## malignant 0 188
##
## Accuracy : 0.9945
## 95% CI : (0.9841, 0.9989)
## No Information Rate : 0.6515
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.9879
##
## Mcnemar's Test P-Value : 0.2482
##
## Sensitivity : 1.0000
## Specificity : 0.9843
## Pos Pred Value : 0.9917
## Neg Pred Value : 1.0000
## Prevalence : 0.6515
## Detection Rate : 0.6515
## Detection Prevalence : 0.6569
## Balanced Accuracy : 0.9921
##
## 'Positive' Class : benign
##
mcrp4 <- confusionMatrix(resultado_prueba, prueba$Class)
mcrp4
## Confusion Matrix and Statistics
##
## Reference
## Prediction benign malignant
## benign 357 3
## malignant 0 188
##
## Accuracy : 0.9945
## 95% CI : (0.9841, 0.9989)
## No Information Rate : 0.6515
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.9879
##
## Mcnemar's Test P-Value : 0.2482
##
## Sensitivity : 1.0000
## Specificity : 0.9843
## Pos Pred Value : 0.9917
## Neg Pred Value : 1.0000
## Prevalence : 0.6515
## Detection Rate : 0.6515
## Detection Prevalence : 0.6569
## Balanced Accuracy : 0.9921
##
## 'Positive' Class : benign
##
# Define la cuadrícula de sintonización para el parámetro cp
#tuneGrid <- expand.grid(cp = 0.01)
# Entrenamiento del modelo
model5 <- train(Class ~ .,
data = entrenamiento,
method = "nnet",
preProcess = c("scale", "center"),
trControl = trainControl(method = "cv", number = 10)
)
## # weights: 83
## initial value 339.732616
## iter 10 value 100.926725
## iter 20 value 76.216441
## iter 30 value 50.772807
## iter 40 value 50.727376
## iter 50 value 50.726862
## final value 50.726787
## converged
## # weights: 247
## initial value 338.813594
## iter 10 value 36.472228
## iter 20 value 25.244606
## iter 30 value 24.688318
## iter 40 value 24.581490
## iter 50 value 24.092892
## iter 60 value 24.040586
## iter 70 value 23.972617
## iter 80 value 23.868068
## iter 90 value 23.823945
## iter 100 value 23.762947
## final value 23.762947
## stopped after 100 iterations
## # weights: 411
## initial value 379.387405
## iter 10 value 26.752774
## iter 20 value 17.471172
## iter 30 value 7.425505
## iter 40 value 5.378711
## iter 50 value 2.401105
## iter 60 value 2.256164
## iter 70 value 1.918069
## iter 80 value 1.909687
## iter 90 value 1.909647
## iter 100 value 1.909639
## final value 1.909639
## stopped after 100 iterations
## # weights: 83
## initial value 306.859555
## iter 10 value 68.944729
## iter 20 value 52.347303
## iter 30 value 45.087148
## iter 40 value 34.278798
## iter 50 value 23.115200
## iter 60 value 19.236077
## iter 70 value 17.805629
## iter 80 value 17.696510
## iter 90 value 17.690828
## final value 17.690765
## converged
## # weights: 247
## initial value 399.007815
## iter 10 value 82.720322
## iter 20 value 40.417450
## iter 30 value 22.167000
## iter 40 value 14.097478
## iter 50 value 11.108854
## iter 60 value 10.532603
## iter 70 value 10.409762
## iter 80 value 10.392814
## iter 90 value 10.390052
## iter 100 value 10.388654
## final value 10.388654
## stopped after 100 iterations
## # weights: 411
## initial value 385.645243
## iter 10 value 39.434357
## iter 20 value 19.762137
## iter 30 value 14.379684
## iter 40 value 10.305221
## iter 50 value 9.131875
## iter 60 value 9.031854
## iter 70 value 8.895743
## iter 80 value 8.882066
## iter 90 value 8.878079
## iter 100 value 8.876480
## final value 8.876480
## stopped after 100 iterations
## # weights: 83
## initial value 421.000331
## iter 10 value 163.483579
## iter 20 value 90.494104
## iter 30 value 61.288384
## iter 40 value 39.895703
## iter 50 value 39.721966
## iter 60 value 39.716757
## iter 70 value 39.708896
## iter 80 value 35.147721
## iter 90 value 34.883263
## iter 100 value 29.553505
## final value 29.553505
## stopped after 100 iterations
## # weights: 247
## initial value 320.723919
## iter 10 value 57.711452
## iter 20 value 42.223006
## iter 30 value 34.267834
## iter 40 value 28.333419
## iter 50 value 23.830968
## iter 60 value 23.430184
## iter 70 value 23.301624
## iter 80 value 22.795307
## iter 90 value 22.654772
## iter 100 value 22.521669
## final value 22.521669
## stopped after 100 iterations
## # weights: 411
## initial value 320.535116
## iter 10 value 20.529550
## iter 20 value 13.697656
## iter 30 value 10.089026
## iter 40 value 9.456808
## iter 50 value 7.199692
## iter 60 value 4.098522
## iter 70 value 3.089207
## iter 80 value 3.059346
## iter 90 value 2.885574
## iter 100 value 2.873574
## final value 2.873574
## stopped after 100 iterations
## # weights: 83
## initial value 342.848176
## iter 10 value 90.820161
## iter 20 value 56.659425
## iter 30 value 56.312852
## iter 40 value 56.312252
## iter 50 value 56.311620
## iter 60 value 52.667000
## iter 70 value 52.341003
## iter 80 value 49.547522
## iter 90 value 49.547313
## iter 100 value 49.547210
## final value 49.547210
## stopped after 100 iterations
## # weights: 247
## initial value 320.608770
## iter 10 value 39.261106
## iter 20 value 23.831750
## iter 30 value 19.217713
## iter 40 value 18.401861
## iter 50 value 17.481300
## iter 60 value 17.293709
## iter 70 value 17.110775
## iter 80 value 17.035470
## iter 90 value 17.000693
## iter 100 value 16.231262
## final value 16.231262
## stopped after 100 iterations
## # weights: 411
## initial value 380.867171
## iter 10 value 18.364840
## iter 20 value 3.821277
## iter 30 value 2.005475
## iter 40 value 1.922251
## iter 50 value 1.910942
## iter 60 value 1.909973
## iter 70 value 1.909879
## iter 80 value 1.909411
## iter 90 value 1.409512
## iter 100 value 1.387350
## final value 1.387350
## stopped after 100 iterations
## # weights: 83
## initial value 323.774693
## iter 10 value 75.250150
## iter 20 value 47.660715
## iter 30 value 39.511788
## iter 40 value 33.347667
## iter 50 value 26.312549
## iter 60 value 21.863594
## iter 70 value 18.808030
## iter 80 value 17.820083
## iter 90 value 17.665635
## iter 100 value 17.663548
## final value 17.663548
## stopped after 100 iterations
## # weights: 247
## initial value 440.470573
## iter 10 value 73.150239
## iter 20 value 34.971708
## iter 30 value 21.198483
## iter 40 value 16.793630
## iter 50 value 13.115277
## iter 60 value 11.593911
## iter 70 value 11.545789
## iter 80 value 11.527587
## iter 90 value 11.526977
## final value 11.526972
## converged
## # weights: 411
## initial value 339.603964
## iter 10 value 53.781364
## iter 20 value 28.614391
## iter 30 value 21.059405
## iter 40 value 14.603766
## iter 50 value 10.984852
## iter 60 value 9.783236
## iter 70 value 9.570419
## iter 80 value 9.489933
## iter 90 value 9.438107
## iter 100 value 9.432460
## final value 9.432460
## stopped after 100 iterations
## # weights: 83
## initial value 329.740194
## iter 10 value 75.433699
## iter 20 value 42.746595
## iter 30 value 42.570565
## iter 40 value 42.514266
## iter 50 value 42.450103
## iter 60 value 33.023352
## iter 70 value 29.520946
## iter 80 value 29.511724
## iter 90 value 22.069377
## iter 100 value 21.947804
## final value 21.947804
## stopped after 100 iterations
## # weights: 247
## initial value 317.347119
## iter 10 value 50.702774
## iter 20 value 26.716097
## iter 30 value 23.819330
## iter 40 value 22.816413
## iter 50 value 20.513774
## iter 60 value 18.292960
## iter 70 value 17.706075
## iter 80 value 17.109225
## iter 90 value 17.059042
## iter 100 value 16.058009
## final value 16.058009
## stopped after 100 iterations
## # weights: 411
## initial value 333.379956
## iter 10 value 39.358142
## iter 20 value 20.497225
## iter 30 value 12.525165
## iter 40 value 11.149897
## iter 50 value 9.142610
## iter 60 value 5.514727
## iter 70 value 4.366777
## iter 80 value 4.183516
## iter 90 value 4.156895
## iter 100 value 4.126042
## final value 4.126042
## stopped after 100 iterations
## # weights: 83
## initial value 390.292970
## iter 10 value 96.420873
## iter 20 value 65.575536
## iter 30 value 58.872186
## iter 40 value 45.361878
## iter 50 value 42.479201
## iter 60 value 42.477934
## iter 70 value 39.944062
## iter 80 value 39.431854
## iter 90 value 39.429949
## iter 100 value 39.429918
## final value 39.429918
## stopped after 100 iterations
## # weights: 247
## initial value 404.026870
## iter 10 value 55.546233
## iter 20 value 52.839942
## iter 30 value 47.164863
## iter 40 value 47.147346
## iter 50 value 47.139100
## iter 60 value 46.995086
## iter 70 value 44.172434
## iter 80 value 43.985061
## iter 90 value 43.919431
## iter 100 value 43.856120
## final value 43.856120
## stopped after 100 iterations
## # weights: 411
## initial value 306.412226
## iter 10 value 16.630632
## iter 20 value 3.361342
## iter 30 value 1.972493
## iter 40 value 1.513087
## iter 50 value 0.313108
## iter 60 value 0.088926
## iter 70 value 0.033393
## iter 80 value 0.018952
## iter 90 value 0.010341
## iter 100 value 0.003185
## final value 0.003185
## stopped after 100 iterations
## # weights: 83
## initial value 365.647570
## iter 10 value 178.573578
## iter 20 value 141.062381
## iter 30 value 94.912334
## iter 40 value 68.778555
## iter 50 value 54.393616
## iter 60 value 40.579748
## iter 70 value 31.172998
## iter 80 value 26.371531
## iter 90 value 23.434043
## iter 100 value 21.762833
## final value 21.762833
## stopped after 100 iterations
## # weights: 247
## initial value 345.787569
## iter 10 value 78.886016
## iter 20 value 46.755638
## iter 30 value 25.301441
## iter 40 value 16.987977
## iter 50 value 13.790073
## iter 60 value 11.796603
## iter 70 value 11.347381
## iter 80 value 11.184345
## iter 90 value 11.106480
## iter 100 value 11.037415
## final value 11.037415
## stopped after 100 iterations
## # weights: 411
## initial value 335.011490
## iter 10 value 90.329279
## iter 20 value 37.202478
## iter 30 value 20.746522
## iter 40 value 12.311291
## iter 50 value 9.657425
## iter 60 value 8.976881
## iter 70 value 8.753030
## iter 80 value 8.725452
## iter 90 value 8.722161
## iter 100 value 8.721664
## final value 8.721664
## stopped after 100 iterations
## # weights: 83
## initial value 322.031583
## iter 10 value 105.330717
## iter 20 value 79.708296
## iter 30 value 61.652739
## iter 40 value 61.129860
## iter 50 value 56.802563
## iter 60 value 56.361634
## iter 70 value 47.396591
## iter 80 value 45.468944
## iter 90 value 45.462752
## iter 100 value 45.451946
## final value 45.451946
## stopped after 100 iterations
## # weights: 247
## initial value 341.903716
## iter 10 value 49.268582
## iter 20 value 16.336689
## iter 30 value 13.350364
## iter 40 value 12.364774
## iter 50 value 10.283284
## iter 60 value 10.250167
## iter 70 value 10.217308
## iter 80 value 8.971408
## iter 90 value 8.950631
## iter 100 value 8.931865
## final value 8.931865
## stopped after 100 iterations
## # weights: 411
## initial value 373.650100
## iter 10 value 28.164868
## iter 20 value 6.877536
## iter 30 value 2.730811
## iter 40 value 2.318668
## iter 50 value 0.444492
## iter 60 value 0.268713
## iter 70 value 0.252207
## iter 80 value 0.192324
## iter 90 value 0.172059
## iter 100 value 0.148143
## final value 0.148143
## stopped after 100 iterations
## # weights: 83
## initial value 327.699704
## iter 10 value 97.040074
## iter 20 value 49.736771
## iter 30 value 44.761395
## iter 40 value 39.450749
## iter 50 value 36.268408
## iter 60 value 36.265877
## final value 36.265835
## converged
## # weights: 247
## initial value 405.608304
## iter 10 value 22.394878
## iter 20 value 13.523224
## iter 30 value 8.974887
## iter 40 value 8.426480
## iter 50 value 8.057922
## iter 60 value 8.047061
## iter 70 value 8.043503
## iter 80 value 7.529781
## iter 90 value 7.522794
## iter 100 value 6.723123
## final value 6.723123
## stopped after 100 iterations
## # weights: 411
## initial value 350.421962
## iter 10 value 41.324328
## iter 20 value 18.846694
## iter 30 value 10.851655
## iter 40 value 7.213559
## iter 50 value 6.284408
## iter 60 value 5.377830
## iter 70 value 4.238231
## iter 80 value 4.202671
## iter 90 value 4.193306
## iter 100 value 4.189432
## final value 4.189432
## stopped after 100 iterations
## # weights: 83
## initial value 312.738022
## iter 10 value 95.481769
## iter 20 value 67.685265
## iter 30 value 54.378205
## iter 40 value 33.707717
## iter 50 value 27.501102
## iter 60 value 22.388011
## iter 70 value 18.116053
## iter 80 value 17.815265
## iter 90 value 17.800838
## iter 100 value 17.800165
## final value 17.800165
## stopped after 100 iterations
## # weights: 247
## initial value 391.418869
## iter 10 value 111.546173
## iter 20 value 44.098744
## iter 30 value 17.588702
## iter 40 value 12.319048
## iter 50 value 11.188652
## iter 60 value 10.823649
## iter 70 value 9.715204
## iter 80 value 9.545090
## iter 90 value 9.538975
## iter 100 value 9.538936
## final value 9.538936
## stopped after 100 iterations
## # weights: 411
## initial value 317.559187
## iter 10 value 53.446079
## iter 20 value 24.698998
## iter 30 value 12.102970
## iter 40 value 9.127654
## iter 50 value 8.708296
## iter 60 value 8.444610
## iter 70 value 8.243020
## iter 80 value 8.105324
## iter 90 value 8.067340
## iter 100 value 8.065581
## final value 8.065581
## stopped after 100 iterations
## # weights: 83
## initial value 359.068257
## iter 10 value 275.077952
## iter 20 value 81.738177
## iter 30 value 68.480788
## iter 40 value 56.436329
## iter 50 value 53.662146
## iter 60 value 53.636148
## iter 70 value 42.782358
## iter 80 value 42.549016
## iter 90 value 42.539321
## iter 100 value 42.531879
## final value 42.531879
## stopped after 100 iterations
## # weights: 247
## initial value 300.154311
## iter 10 value 15.055859
## iter 20 value 5.096175
## iter 30 value 2.411631
## iter 40 value 2.144831
## iter 50 value 2.081965
## iter 60 value 2.069863
## iter 70 value 2.021977
## iter 80 value 2.001702
## iter 90 value 0.127928
## iter 100 value 0.098381
## final value 0.098381
## stopped after 100 iterations
## # weights: 411
## initial value 326.579784
## iter 10 value 31.341952
## iter 20 value 9.370759
## iter 30 value 2.851914
## iter 40 value 2.741542
## iter 50 value 2.464219
## iter 60 value 2.441239
## iter 70 value 2.395381
## iter 80 value 2.048255
## iter 90 value 2.037726
## iter 100 value 0.215423
## final value 0.215423
## stopped after 100 iterations
## # weights: 83
## initial value 317.637421
## iter 10 value 69.616674
## iter 20 value 48.268143
## iter 30 value 48.266238
## iter 40 value 45.488007
## iter 50 value 45.419098
## final value 45.419043
## converged
## # weights: 247
## initial value 292.093313
## iter 10 value 76.206146
## iter 20 value 31.424797
## iter 30 value 25.746713
## iter 40 value 24.509579
## iter 50 value 24.210102
## iter 60 value 23.295214
## iter 70 value 23.281950
## iter 80 value 23.220335
## iter 90 value 23.076158
## iter 100 value 22.855181
## final value 22.855181
## stopped after 100 iterations
## # weights: 411
## initial value 309.601820
## iter 10 value 10.650438
## iter 20 value 3.087572
## iter 30 value 2.001493
## iter 40 value 1.934424
## iter 50 value 1.902231
## iter 60 value 1.387978
## iter 70 value 0.041214
## iter 80 value 0.005922
## iter 90 value 0.001557
## iter 100 value 0.000861
## final value 0.000861
## stopped after 100 iterations
## # weights: 83
## initial value 331.163125
## iter 10 value 103.329492
## iter 20 value 64.373445
## iter 30 value 40.954473
## iter 40 value 25.750137
## iter 50 value 18.562383
## iter 60 value 17.439325
## iter 70 value 17.360466
## iter 80 value 17.356909
## final value 17.356877
## converged
## # weights: 247
## initial value 365.398703
## iter 10 value 78.191420
## iter 20 value 40.110157
## iter 30 value 23.797869
## iter 40 value 14.417759
## iter 50 value 11.526298
## iter 60 value 10.716058
## iter 70 value 10.330288
## iter 80 value 10.149015
## iter 90 value 10.147428
## final value 10.147420
## converged
## # weights: 411
## initial value 372.595294
## iter 10 value 72.529448
## iter 20 value 44.782630
## iter 30 value 18.934642
## iter 40 value 10.536157
## iter 50 value 9.137754
## iter 60 value 8.914421
## iter 70 value 8.747610
## iter 80 value 8.408047
## iter 90 value 8.310906
## iter 100 value 8.250086
## final value 8.250086
## stopped after 100 iterations
## # weights: 83
## initial value 318.548929
## iter 10 value 80.709309
## iter 20 value 64.241111
## iter 30 value 61.345478
## iter 40 value 61.311853
## iter 50 value 60.279938
## iter 60 value 49.679353
## iter 70 value 46.527192
## iter 80 value 41.715788
## iter 90 value 36.345104
## iter 100 value 36.306746
## final value 36.306746
## stopped after 100 iterations
## # weights: 247
## initial value 319.195944
## iter 10 value 21.861340
## iter 20 value 15.413531
## iter 30 value 15.242581
## iter 40 value 15.235427
## iter 50 value 15.230741
## iter 60 value 15.227555
## iter 70 value 15.223566
## iter 80 value 15.220808
## iter 90 value 11.248512
## iter 100 value 6.753979
## final value 6.753979
## stopped after 100 iterations
## # weights: 411
## initial value 323.012598
## iter 10 value 9.883549
## iter 20 value 2.642070
## iter 30 value 2.158163
## iter 40 value 2.120154
## iter 50 value 2.087100
## iter 60 value 0.295144
## iter 70 value 0.221675
## iter 80 value 0.201098
## iter 90 value 0.191134
## iter 100 value 0.160753
## final value 0.160753
## stopped after 100 iterations
## # weights: 83
## initial value 322.624573
## iter 10 value 45.276627
## iter 20 value 33.707193
## iter 30 value 18.948351
## iter 40 value 15.213892
## iter 50 value 15.175213
## iter 60 value 15.172990
## iter 70 value 15.172708
## final value 15.172692
## converged
## # weights: 247
## initial value 337.170400
## iter 10 value 64.624710
## iter 20 value 41.509662
## iter 30 value 36.255910
## iter 40 value 35.605169
## iter 50 value 35.590046
## iter 60 value 35.531100
## iter 70 value 35.526537
## iter 80 value 35.421063
## iter 90 value 35.420308
## iter 100 value 35.367248
## final value 35.367248
## stopped after 100 iterations
## # weights: 411
## initial value 341.933394
## iter 10 value 24.155359
## iter 20 value 10.977926
## iter 30 value 7.128290
## iter 40 value 6.107837
## iter 50 value 5.809126
## iter 60 value 5.281913
## iter 70 value 4.288907
## iter 80 value 4.201779
## iter 90 value 4.104369
## iter 100 value 4.049056
## final value 4.049056
## stopped after 100 iterations
## # weights: 83
## initial value 323.262182
## iter 10 value 60.163601
## iter 20 value 44.056949
## iter 30 value 26.649437
## iter 40 value 21.997374
## iter 50 value 18.009073
## iter 60 value 17.793057
## iter 70 value 17.761880
## final value 17.761733
## converged
## # weights: 247
## initial value 372.285214
## iter 10 value 55.798318
## iter 20 value 31.962935
## iter 30 value 20.345140
## iter 40 value 14.905113
## iter 50 value 11.687984
## iter 60 value 10.632952
## iter 70 value 9.516863
## iter 80 value 9.431740
## iter 90 value 9.390572
## iter 100 value 9.380124
## final value 9.380124
## stopped after 100 iterations
## # weights: 411
## initial value 376.085206
## iter 10 value 39.065641
## iter 20 value 17.421265
## iter 30 value 10.495045
## iter 40 value 9.021282
## iter 50 value 8.560702
## iter 60 value 8.172413
## iter 70 value 8.049999
## iter 80 value 8.014558
## iter 90 value 7.940663
## iter 100 value 7.931032
## final value 7.931032
## stopped after 100 iterations
## # weights: 83
## initial value 322.535661
## iter 10 value 122.153090
## iter 20 value 56.929131
## iter 30 value 54.060473
## iter 40 value 53.813181
## iter 50 value 53.797633
## iter 60 value 45.570084
## iter 70 value 45.503720
## iter 80 value 45.493266
## iter 90 value 45.477563
## iter 100 value 45.473520
## final value 45.473520
## stopped after 100 iterations
## # weights: 247
## initial value 397.872155
## iter 10 value 54.565581
## iter 20 value 22.253059
## iter 30 value 19.972021
## iter 40 value 19.219221
## iter 50 value 17.335114
## iter 60 value 15.985356
## iter 70 value 15.180176
## iter 80 value 13.201614
## iter 90 value 11.856907
## iter 100 value 11.750346
## final value 11.750346
## stopped after 100 iterations
## # weights: 411
## initial value 561.600994
## iter 10 value 52.599108
## iter 20 value 34.432850
## iter 30 value 24.418149
## iter 40 value 21.916167
## iter 50 value 18.118324
## iter 60 value 17.493165
## iter 70 value 17.251588
## iter 80 value 12.592056
## iter 90 value 12.508752
## iter 100 value 11.464474
## final value 11.464474
## stopped after 100 iterations
## # weights: 83
## initial value 354.058624
## iter 10 value 82.818918
## iter 20 value 49.597236
## iter 30 value 47.014268
## iter 40 value 44.293882
## iter 50 value 44.292673
## final value 44.292669
## converged
## # weights: 247
## initial value 401.520483
## iter 10 value 52.580346
## iter 20 value 44.164039
## iter 30 value 43.851428
## iter 40 value 43.547275
## iter 50 value 42.289079
## iter 60 value 24.399163
## iter 70 value 24.291788
## iter 80 value 24.291102
## iter 90 value 23.766790
## iter 100 value 23.201467
## final value 23.201467
## stopped after 100 iterations
## # weights: 411
## initial value 338.459032
## iter 10 value 13.455666
## iter 20 value 5.730719
## iter 30 value 2.609874
## iter 40 value 0.529181
## iter 50 value 0.072542
## iter 60 value 0.038645
## iter 70 value 0.015284
## iter 80 value 0.008681
## iter 90 value 0.005231
## iter 100 value 0.002313
## final value 0.002313
## stopped after 100 iterations
## # weights: 83
## initial value 410.865962
## iter 10 value 57.062412
## iter 20 value 43.715098
## iter 30 value 28.810783
## iter 40 value 24.319874
## iter 50 value 22.247424
## iter 60 value 22.080214
## iter 70 value 22.040223
## iter 80 value 22.038917
## final value 22.038874
## converged
## # weights: 247
## initial value 416.861767
## iter 10 value 73.805160
## iter 20 value 41.514330
## iter 30 value 22.890348
## iter 40 value 13.527510
## iter 50 value 10.968948
## iter 60 value 10.780554
## iter 70 value 10.711860
## iter 80 value 10.705957
## iter 90 value 10.705846
## final value 10.705846
## converged
## # weights: 411
## initial value 477.971849
## iter 10 value 42.255813
## iter 20 value 21.827884
## iter 30 value 13.381926
## iter 40 value 10.538449
## iter 50 value 9.395567
## iter 60 value 8.873526
## iter 70 value 8.850700
## iter 80 value 8.849011
## iter 90 value 8.838002
## iter 100 value 8.837809
## final value 8.837809
## stopped after 100 iterations
## # weights: 83
## initial value 396.230062
## iter 10 value 92.549094
## iter 20 value 85.267300
## iter 30 value 81.047186
## iter 40 value 65.436824
## iter 50 value 59.648158
## iter 60 value 57.208582
## iter 70 value 57.154329
## iter 80 value 49.789382
## iter 90 value 49.639709
## iter 100 value 46.734005
## final value 46.734005
## stopped after 100 iterations
## # weights: 247
## initial value 355.356394
## iter 10 value 15.714548
## iter 20 value 7.769944
## iter 30 value 4.961588
## iter 40 value 2.444974
## iter 50 value 2.026529
## iter 60 value 1.508253
## iter 70 value 1.499693
## iter 80 value 1.494430
## iter 90 value 1.492026
## iter 100 value 1.484937
## final value 1.484937
## stopped after 100 iterations
## # weights: 411
## initial value 473.863179
## iter 10 value 20.999530
## iter 20 value 9.411438
## iter 30 value 3.938762
## iter 40 value 0.328262
## iter 50 value 0.252739
## iter 60 value 0.233742
## iter 70 value 0.209812
## iter 80 value 0.180023
## iter 90 value 0.153013
## iter 100 value 0.137071
## final value 0.137071
## stopped after 100 iterations
## # weights: 83
## initial value 387.405134
## iter 10 value 60.408721
## iter 20 value 42.492214
## iter 30 value 42.479378
## iter 40 value 42.478194
## iter 50 value 42.477730
## iter 60 value 42.477547
## final value 42.477518
## converged
## # weights: 247
## initial value 309.022663
## iter 10 value 25.117165
## iter 20 value 10.837833
## iter 30 value 5.892461
## iter 40 value 4.741928
## iter 50 value 4.087751
## iter 60 value 3.740920
## iter 70 value 3.740727
## iter 80 value 3.739988
## iter 90 value 3.735739
## iter 100 value 3.674024
## final value 3.674024
## stopped after 100 iterations
## # weights: 411
## initial value 368.740002
## iter 10 value 14.688377
## iter 20 value 7.322897
## iter 30 value 3.410640
## iter 40 value 0.333145
## iter 50 value 0.087230
## iter 60 value 0.005537
## iter 70 value 0.001141
## iter 80 value 0.000333
## iter 90 value 0.000230
## final value 0.000048
## converged
## # weights: 83
## initial value 374.142076
## iter 10 value 98.540896
## iter 20 value 60.425446
## iter 30 value 49.331192
## iter 40 value 37.872014
## iter 50 value 30.274757
## iter 60 value 27.060118
## iter 70 value 19.598644
## iter 80 value 18.412265
## iter 90 value 18.365587
## iter 100 value 18.365182
## final value 18.365182
## stopped after 100 iterations
## # weights: 247
## initial value 357.808510
## iter 10 value 64.071346
## iter 20 value 30.160775
## iter 30 value 16.472261
## iter 40 value 15.442750
## iter 50 value 15.049575
## iter 60 value 14.541144
## iter 70 value 14.192301
## iter 80 value 14.163769
## iter 90 value 14.160280
## iter 100 value 14.159773
## final value 14.159773
## stopped after 100 iterations
## # weights: 411
## initial value 380.822714
## iter 10 value 31.802105
## iter 20 value 13.648664
## iter 30 value 11.640508
## iter 40 value 11.088365
## iter 50 value 10.548592
## iter 60 value 10.350074
## iter 70 value 10.162652
## iter 80 value 10.117457
## iter 90 value 10.111842
## iter 100 value 10.111584
## final value 10.111584
## stopped after 100 iterations
## # weights: 83
## initial value 320.723752
## iter 10 value 87.403297
## iter 20 value 71.934166
## iter 30 value 67.211392
## iter 40 value 67.123223
## iter 50 value 62.967114
## iter 60 value 61.360763
## iter 70 value 60.122569
## iter 80 value 57.245425
## iter 90 value 57.138387
## iter 100 value 54.145247
## final value 54.145247
## stopped after 100 iterations
## # weights: 247
## initial value 336.570493
## iter 10 value 89.665490
## iter 20 value 61.215552
## iter 30 value 55.193924
## iter 40 value 46.617195
## iter 50 value 43.178705
## iter 60 value 39.931395
## iter 70 value 39.216842
## iter 80 value 38.408513
## iter 90 value 38.029687
## iter 100 value 37.352159
## final value 37.352159
## stopped after 100 iterations
## # weights: 411
## initial value 321.404772
## iter 10 value 10.653765
## iter 20 value 1.374470
## iter 30 value 0.216181
## iter 40 value 0.164565
## iter 50 value 0.157599
## iter 60 value 0.146277
## iter 70 value 0.127290
## iter 80 value 0.110938
## iter 90 value 0.098501
## iter 100 value 0.090566
## final value 0.090566
## stopped after 100 iterations
## # weights: 83
## initial value 338.514473
## iter 10 value 56.507454
## iter 20 value 51.076010
## iter 30 value 48.270942
## final value 48.269303
## converged
## # weights: 247
## initial value 349.784766
## iter 10 value 96.758746
## iter 20 value 31.132871
## iter 30 value 27.956879
## iter 40 value 26.395283
## iter 50 value 20.007069
## iter 60 value 18.469410
## iter 70 value 15.924356
## iter 80 value 15.402755
## iter 90 value 15.387993
## iter 100 value 14.884795
## final value 14.884795
## stopped after 100 iterations
## # weights: 411
## initial value 351.972270
## iter 10 value 26.852174
## iter 20 value 10.721950
## iter 30 value 9.187464
## iter 40 value 6.531935
## iter 50 value 6.490965
## iter 60 value 6.488084
## iter 70 value 6.314290
## iter 80 value 6.313104
## iter 90 value 6.311048
## iter 100 value 6.099418
## final value 6.099418
## stopped after 100 iterations
## # weights: 83
## initial value 336.057771
## iter 10 value 61.260298
## iter 20 value 44.116564
## iter 30 value 33.792561
## iter 40 value 28.634926
## iter 50 value 24.658789
## iter 60 value 18.839327
## iter 70 value 18.160666
## iter 80 value 18.103549
## iter 90 value 18.100172
## final value 18.100125
## converged
## # weights: 247
## initial value 342.974309
## iter 10 value 62.363716
## iter 20 value 30.056188
## iter 30 value 15.649794
## iter 40 value 10.799323
## iter 50 value 10.173413
## iter 60 value 10.048488
## iter 70 value 10.009948
## iter 80 value 9.909757
## iter 90 value 9.784249
## iter 100 value 9.771721
## final value 9.771721
## stopped after 100 iterations
## # weights: 411
## initial value 303.172347
## iter 10 value 50.556819
## iter 20 value 23.236861
## iter 30 value 14.092728
## iter 40 value 10.819680
## iter 50 value 9.716288
## iter 60 value 9.384775
## iter 70 value 9.161705
## iter 80 value 9.132781
## iter 90 value 9.125010
## iter 100 value 9.119344
## final value 9.119344
## stopped after 100 iterations
## # weights: 83
## initial value 361.122998
## iter 10 value 91.095770
## iter 20 value 54.426037
## iter 30 value 38.921620
## iter 40 value 35.940673
## iter 50 value 33.059171
## iter 60 value 33.046771
## iter 70 value 29.582029
## iter 80 value 29.567843
## iter 90 value 29.551815
## iter 100 value 29.540251
## final value 29.540251
## stopped after 100 iterations
## # weights: 247
## initial value 339.376525
## iter 10 value 48.665472
## iter 20 value 40.885051
## iter 30 value 38.486177
## iter 40 value 33.928778
## iter 50 value 28.696272
## iter 60 value 26.159312
## iter 70 value 25.752740
## iter 80 value 25.740857
## iter 90 value 25.587843
## iter 100 value 25.541767
## final value 25.541767
## stopped after 100 iterations
## # weights: 411
## initial value 370.812423
## iter 10 value 38.404154
## iter 20 value 26.429971
## iter 30 value 17.793763
## iter 40 value 12.636892
## iter 50 value 11.713392
## iter 60 value 4.036862
## iter 70 value 2.804308
## iter 80 value 2.187357
## iter 90 value 1.820133
## iter 100 value 1.584535
## final value 1.584535
## stopped after 100 iterations
## # weights: 83
## initial value 329.216565
## iter 10 value 55.114769
## iter 20 value 48.285661
## iter 30 value 42.490577
## iter 40 value 42.478771
## iter 50 value 42.477876
## iter 60 value 42.477543
## iter 70 value 42.477409
## final value 42.477399
## converged
## # weights: 247
## initial value 373.613887
## iter 10 value 229.441676
## iter 20 value 50.604305
## iter 30 value 47.016093
## iter 40 value 46.142710
## iter 50 value 45.989164
## iter 60 value 45.817925
## iter 70 value 45.698441
## iter 80 value 45.089649
## iter 90 value 45.088253
## iter 100 value 45.088090
## final value 45.088090
## stopped after 100 iterations
## # weights: 411
## initial value 342.019939
## iter 10 value 29.455498
## iter 20 value 16.760820
## iter 30 value 14.141542
## iter 40 value 13.208925
## iter 50 value 13.156474
## iter 60 value 12.985353
## iter 70 value 12.837134
## iter 80 value 11.570779
## iter 90 value 10.068192
## iter 100 value 8.789215
## final value 8.789215
## stopped after 100 iterations
## # weights: 83
## initial value 352.148212
## iter 10 value 94.332195
## iter 20 value 59.227890
## iter 30 value 44.431335
## iter 40 value 38.562176
## iter 50 value 32.055570
## iter 60 value 26.764239
## iter 70 value 22.785618
## iter 80 value 19.063101
## iter 90 value 18.404299
## iter 100 value 18.392684
## final value 18.392684
## stopped after 100 iterations
## # weights: 247
## initial value 341.524464
## iter 10 value 104.640464
## iter 20 value 74.413079
## iter 30 value 33.840626
## iter 40 value 17.374273
## iter 50 value 12.297783
## iter 60 value 10.629558
## iter 70 value 10.470805
## iter 80 value 10.431214
## iter 90 value 10.421969
## final value 10.421927
## converged
## # weights: 411
## initial value 319.845159
## iter 10 value 42.133951
## iter 20 value 15.831626
## iter 30 value 11.177438
## iter 40 value 9.639678
## iter 50 value 9.164601
## iter 60 value 9.100559
## iter 70 value 9.090308
## iter 80 value 9.088008
## final value 9.087990
## converged
## # weights: 83
## initial value 374.859551
## iter 10 value 53.463529
## iter 20 value 45.496281
## iter 30 value 45.488603
## iter 40 value 42.685227
## iter 50 value 42.531831
## iter 60 value 42.525883
## iter 70 value 42.517581
## iter 80 value 39.718228
## iter 90 value 39.466543
## iter 100 value 39.463263
## final value 39.463263
## stopped after 100 iterations
## # weights: 247
## initial value 322.484274
## iter 10 value 98.408016
## iter 20 value 97.647559
## final value 97.647525
## converged
## # weights: 411
## initial value 440.471666
## iter 10 value 34.426591
## iter 20 value 15.391160
## iter 30 value 12.395896
## iter 40 value 11.303793
## iter 50 value 8.045107
## iter 60 value 6.685209
## iter 70 value 5.035030
## iter 80 value 4.066666
## iter 90 value 4.057623
## iter 100 value 4.038722
## final value 4.038722
## stopped after 100 iterations
## # weights: 411
## initial value 316.885830
## iter 10 value 75.025675
## iter 20 value 24.511806
## iter 30 value 13.965069
## iter 40 value 10.655274
## iter 50 value 9.985452
## iter 60 value 9.668410
## iter 70 value 9.600093
## iter 80 value 9.583957
## iter 90 value 9.447033
## iter 100 value 9.395517
## final value 9.395517
## stopped after 100 iterations
# Predicción en datos de entrenamiento y prueba
resultado_entrenamiento5 <- predict(model5, entrenamiento)
resultado_prueba5 <- predict(model5, prueba)
# Matriz de Confusión
mcre5 <- confusionMatrix(resultado_entrenamiento, entrenamiento$Class)
mcre5
## Confusion Matrix and Statistics
##
## Reference
## Prediction benign malignant
## benign 357 3
## malignant 0 188
##
## Accuracy : 0.9945
## 95% CI : (0.9841, 0.9989)
## No Information Rate : 0.6515
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.9879
##
## Mcnemar's Test P-Value : 0.2482
##
## Sensitivity : 1.0000
## Specificity : 0.9843
## Pos Pred Value : 0.9917
## Neg Pred Value : 1.0000
## Prevalence : 0.6515
## Detection Rate : 0.6515
## Detection Prevalence : 0.6569
## Balanced Accuracy : 0.9921
##
## 'Positive' Class : benign
##
mcrp5 <- confusionMatrix(resultado_prueba, prueba$Class)
mcrp5
## Confusion Matrix and Statistics
##
## Reference
## Prediction benign malignant
## benign 357 3
## malignant 0 188
##
## Accuracy : 0.9945
## 95% CI : (0.9841, 0.9989)
## No Information Rate : 0.6515
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.9879
##
## Mcnemar's Test P-Value : 0.2482
##
## Sensitivity : 1.0000
## Specificity : 0.9843
## Pos Pred Value : 0.9917
## Neg Pred Value : 1.0000
## Prevalence : 0.6515
## Detection Rate : 0.6515
## Detection Prevalence : 0.6569
## Balanced Accuracy : 0.9921
##
## 'Positive' Class : benign
##
# Define la cuadrícula de sintonización para el parámetro cp
#tuneGrid <- expand.grid(cp = 0.01)
# Entrenamiento del modelo
model6 <- train(Class ~ .,
data = entrenamiento,
method = "rf",
preProcess = c("scale", "center"),
trControl = trainControl(method = "cv", number = 10),
tuneGrid =expand.grid(mtry = c(2,4,6))
)
## Warning in preProcess.default(thresh = 0.95, k = 5, freqCut = 19, uniqueCut =
## 10, : These variables have zero variances: Mitoses6
## Warning in preProcess.default(thresh = 0.95, k = 5, freqCut = 19, uniqueCut =
## 10, : These variables have zero variances: Mitoses6
## Warning in preProcess.default(thresh = 0.95, k = 5, freqCut = 19, uniqueCut =
## 10, : These variables have zero variances: Mitoses6
# Predicción en datos de entrenamiento y prueba
resultado_entrenamiento6 <- predict(model6, entrenamiento)
resultado_prueba6 <- predict(model6, prueba)
# Matriz de Confusión
mcre6 <- confusionMatrix(resultado_entrenamiento, entrenamiento$Class)
mcre6
## Confusion Matrix and Statistics
##
## Reference
## Prediction benign malignant
## benign 357 3
## malignant 0 188
##
## Accuracy : 0.9945
## 95% CI : (0.9841, 0.9989)
## No Information Rate : 0.6515
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.9879
##
## Mcnemar's Test P-Value : 0.2482
##
## Sensitivity : 1.0000
## Specificity : 0.9843
## Pos Pred Value : 0.9917
## Neg Pred Value : 1.0000
## Prevalence : 0.6515
## Detection Rate : 0.6515
## Detection Prevalence : 0.6569
## Balanced Accuracy : 0.9921
##
## 'Positive' Class : benign
##
mcrp6 <- confusionMatrix(resultado_prueba, prueba$Class)
mcrp6
## Confusion Matrix and Statistics
##
## Reference
## Prediction benign malignant
## benign 357 3
## malignant 0 188
##
## Accuracy : 0.9945
## 95% CI : (0.9841, 0.9989)
## No Information Rate : 0.6515
## P-Value [Acc > NIR] : <2e-16
##
## Kappa : 0.9879
##
## Mcnemar's Test P-Value : 0.2482
##
## Sensitivity : 1.0000
## Specificity : 0.9843
## Pos Pred Value : 0.9917
## Neg Pred Value : 1.0000
## Prevalence : 0.6515
## Detection Rate : 0.6515
## Detection Prevalence : 0.6569
## Balanced Accuracy : 0.9921
##
## 'Positive' Class : benign
##
resultados <- data.frame(
"svmLinear" = c(mcre$overall["Accuracy"], mcrp$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 nnet
## Precisión de entrenamiento 0.9945255 0.9945255 0.9945255 0.9945255 0.9945255
## Precisión de prueba 0.9945255 0.9945255 0.9945255 0.9945255 0.9945255
## rf
## Precisión de entrenamiento 0.9945255
## Precisión de prueba 0.9945255
El modelo con el método de bosques aleatorios presenta sobreajustes, ya que tiene una alta precisión en entrenamiento, pero baja en prueba.
Acorde al resumen de resultados, el mejor modelo es el de Máquina de Vectores de Soporte Lineal.