script-enyalius-ml_algorithms-edit

Author

Matheus Salles

Published

July 15, 2024

Short introduction on the theme

The genus Enyalius (WAGLER 1830) comprises eleven species of Neotropical leiosaurids. Enyalius lizards are medium-sized, robust, arboreal, and semi-arboreal, associated with Brazilian tropical and subtropical forests (Rodrigues et al., 2006). While the taxonomy of Enyalius has been relatively stable, the true diversity of the genus remains underestimated (Rodrigues et al., 2014). The most recent taxonomic revisions by Etheridge (1969) and Jackson (1978) provided modern diagnoses and precise descriptions. However, finding diagnostic morphological characters for this genus remains challenging due to high overlap in the statistical parameters of these characters (Breitman et al., 2018; Rodrigues et al., 2006). Until 2018, 10 species were described, when Breitman et al. (2018) introduced Enyalius capetinga. The currently recognized species are: E. bilineatus, E. brasiliensis, E. boulengeri, E. iheringii, E. perditus, and E. pictus (mainly in the Atlantic Forest); E. erythroceneus (Caatinga); E. leechii (Amazon); E. catenatus and E. bibronii (Atlantic Forest and Caatinga); and E. capetinga (endemic to the Cerrado).

Traditionally, multivariate analyses like linear discriminant function analysis are used to classify and predict group membership (Quinn & Keough, 2002). However, as Domingos et al. (2014) noted, these strategies may not be ideal for certain biological sample types. They employed a support-vector machine approach for cryptic species clades, achieving high predictive power. Similarly, Breitman et al. (2018) used the Random Forest algorithm to distinguish species morphologically, achieving better statistical performance than classic multivariate analyses. Within this context, the primary aim of this study is to compare the performance of various machine learning algorithms in the morphological diagnosis of Enyalius lizards. More specifically, we also aim to: 1) compare the performance of algorithms with different mathematical properties to identify the most effective for extracting diagnostic information; 2) re-evaluate the data analyzed by Breitman et al. (2018) to determine if Random Forest was the optimal predictive model compared to other algorithms; 3) identify which Enyalius species are most difficult to diagnose based on the accuracy of the machine learning algorithms.

BREITMAN, M. F., et al. (2018). A New Species of Enyalius (Squamata, Leiosauridae) Endemic to the Brazilian Cerrado. Herpetologica, 74(4), 14. DOI: https://doi.org/10.1655/0018-0831.355

DOMINGOS, F. M. C. B., et al. (2014). Out of the deep - Cryptic speciation in a Neotropical gecko (Squamata, Phyllodactylidae) revealed by species delimitation methods. Molecular Phylogenetics and Evolution, 80, 12. DOI: http://dx.doi.org/10.1016/j.ympev.2014.07.022

ETHERIDGE, R. E. (1969). A review of the Iguanid lizard genus Enyalius. Bulletin of the British Museum (Natural History)(18), 27.

JACKSON, J. F. (1978). Differentiation in the genera Enyalius and Strobilurus (Iguanidae): implications for pleistocene climatic changes in Eastern Brazil Arquivos de Zoologia, 30(1), 79. DOI: https://doi.org/10.11606/issn.2176-7793.v30i1p1-79

QUINN, G. P., ; KEOUGH, M. J. (2002). Experimental Design and Analysis for Biologists: Cambridge University Press.

RODRIGUES, M. T., et al. (2006). A new species of lizard genus Enyalius (Squamata, Leiosauridae) from the highlands of Chapada Diamantina, state of Bahia, Brazil, with a key to species. Phyllomedusa, 5(1), 14. DOI: https://doi.org/10.11606/issn.2316-9079.v5i1p11-24

RODRIGUES, M. T., et al. (2014). Molecular phylogeny, species limits, and biogeography of the Brazilian 4 endemic lizard genus Enyalius (Squamata: Leiosauridae): An example 5 of the historical relationship between Atlantic Forests and Amazonia. Molecular Phylogenetics and Evolution, 10. DOI: http://dx.doi.org/10.1016/j.ympev.2014.07.019

Installing and loading necessary packages

#install.packages("mice")
#install.packages("tidyverse")
#install.packages("readxl")
#install.packages("caret")
#install.packages("e1071")
#install.packages("glmnet")
#install.packages("MLmetrics")
#install.packages("caretEnsemble")
#install.packages("kernlab")
#install.packages("xgboost")
#install.packages("fastDummies")
#install.packages("devtools")
#install.packages("pROC")
#install.packages("plotly")
#install.packages("tidymodels")
#install.packages("multiROC")

library(plotly)
library(tidymodels)
library(pROC)
library(devtools)
library(multiROC)
library(mice)
library(tidyverse)
library(readxl)
library(caret)
library(e1071)
library(glmnet)
library(MLmetrics)
library(caretEnsemble)
library(kernlab)
library(xgboost)
library(fastDummies)

Loading the data set

# Setting working directory
setwd("C:/Users/User/OneDrive/projeto_tropidurus") #change it according to your specific path

# Importing our lizard data set
data_enyalius <- read_xlsx("herp-74-04-335_s02-edit.xlsx",
                           sheet = "Morphological data set",
                           range = NULL,
                           col_names = TRUE,
                           col_types = c("text","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","numeric","text","numeric","numeric","numeric","numeric","numeric","numeric"),
                           na = "NA")
class(data_enyalius)
[1] "tbl_df"     "tbl"        "data.frame"
str(data_enyalius)
tibble [259 x 48] (S3: tbl_df/tbl/data.frame)
 $ final_species_name: chr [1:259] "bad_sample" "bad_sample" "bad_sample" "E_bibronii" ...
 $ Cro               : num [1:259] 1 0 1 1 1 1 1 1 1 0 ...
 $ A                 : num [1:259] 1 1 1 1 1 1 1 1 1 1 ...
 $ SpC               : num [1:259] 1 1 1 1 0 1 1 1 1 1 ...
 $ InC               : num [1:259] 0 1 0 0 0 0 0 0 0 0 ...
 $ InB               : num [1:259] 1 1 1 0 0 0 1 0 0 0 ...
 $ SpF               : num [1:259] 1 1 1 0 0 1 1 0 1 1 ...
 $ DCS               : num [1:259] 0 1 1 0 1 1 0 0 1 1 ...
 $ PVS               : num [1:259] 2 3 3 2 3 2 2 2 3 2 ...
 $ DS                : num [1:259] 2 1 1 0 1 0 2 0 1 2 ...
 $ LS                : num [1:259] 0 1 1 1 0 0 0 0 0 0 ...
 $ VnS               : num [1:259] 1 1 0 0 0 0 0 0 0 0 ...
 $ NPRC              : num [1:259] 0 0 0 0 0 0 0 1 0 0 ...
 $ SbO               : num [1:259] 0 1 NA 0 1 1 1 1 1 1 ...
 $ GF                : num [1:259] 1 1 1 1 1 1 1 1 1 1 ...
 $ EGFS              : num [1:259] 1 1 0 0 0 0 0 0 0 0 ...
 $ DHS               : num [1:259] 1 1 0 0 1 1 0 0 1 1 ...
 $ M                 : num [1:259] 0 1 0 0 1 1 0 0 1 1 ...
 $ TL4               : num [1:259] 0 0 0 0 0 0 0 0 0 0 ...
 $ FL4               : num [1:259] 0 0 0 0 0 0 0 0 0 0 ...
 $ DC                : num [1:259] 1 1 1 1 1 1 1 1 1 1 ...
 $ nPVS              : num [1:259] NA 85 75 81 77 78 81 91 87 86 ...
 $ nMS               : num [1:259] NA 71 59 55 60 57 54 59 59 59 ...
 $ nVrS              : num [1:259] NA 53 59 57 56 58 58 56 61 64 ...
 $ nVnS              : num [1:259] NA 44 44 48 46 50 46 50 55 48 ...
 $ nInL              : num [1:259] 8 10 10 10 8 10 10 12 9 9 ...
 $ nPM               : num [1:259] 3 4 2 2 2 2 2 2 2 2 ...
 $ ncPM              : num [1:259] 7 9 7 6 6 6 7 7 8 7 ...
 $ nGS               : num [1:259] 27 54 37 40 36 37 37 40 40 38 ...
 $ nCRo              : num [1:259] 4 5 4 4 4 4 5 4 5 4 ...
 $ nbNSpL            : num [1:259] 1 1 1 1 2 1 1 1 1 3 ...
 $ nLS               : num [1:259] 4 7 5 5 7 6 5 7 6 6 ...
 $ ncIp              : num [1:259] 7 10 NA 10 8 8 10 9 9 10 ...
 $ nbCoA             : num [1:259] 4 4 3 3 2 2 2 2 1 2 ...
 $ nSpL              : num [1:259] 5 11 10 11 11 11 10 11 11 9 ...
 $ nPR               : num [1:259] 8 6 6 7 8 7 8 6 5 7 ...
 $ nSbO              : num [1:259] 12 20 NA 14 12 15 13 14 17 11 ...
 $ nSpC              : num [1:259] 7 11 NA 10 10 12 9 11 11 11 ...
 $ nbSbOSpL          : num [1:259] 1 1 NA 1 1 1 1 1 2 1 ...
 $ TL                : num [1:259] NA 182 197 134 NA 205 149 169 213 224 ...
 $ SVL               : num [1:259] NA 94 90 67 118 105 67 80 97 120 ...
 $ sex               : chr [1:259] NA NA NA NA ...
 $ n4TL              : num [1:259] NA 34 33 33 28 34 32 30 30 31 ...
 $ n4FL              : num [1:259] NA 24 22 19 17 22 21 19 21 20 ...
 $ nS4FL             : num [1:259] NA 0 3 4 2 2 4 3 3 4 ...
 $ nDlT              : num [1:259] NA 12 14 12 11 13 12 11 12 13 ...
 $ nArT              : num [1:259] NA 39 41 38 38 43 34 39 37 43 ...
 $ nAlT              : num [1:259] NA NA NA NA NA 117 NA 148 152 145 ...
# Transforming 'species name' and 'sex' into factors
data_enyalius$final_species_name <- as.factor(data_enyalius$final_species_name)
data_enyalius$sex <- as.factor(data_enyalius$sex)
# Transforming binary categories into factors
data_enyalius[,2:21] <- lapply(data_enyalius[,2:21] , factor)
str(data_enyalius)
tibble [259 x 48] (S3: tbl_df/tbl/data.frame)
 $ final_species_name: Factor w/ 15 levels "bad_sample","E_bibronii",..: 1 1 1 2 2 2 2 2 2 2 ...
 $ Cro               : Factor w/ 2 levels "0","1": 2 1 2 2 2 2 2 2 2 1 ...
 $ A                 : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
 $ SpC               : Factor w/ 2 levels "0","1": 2 2 2 2 1 2 2 2 2 2 ...
 $ InC               : Factor w/ 2 levels "0","1": 1 2 1 1 1 1 1 1 1 1 ...
 $ InB               : Factor w/ 3 levels "0","1","2": 2 2 2 1 1 1 2 1 1 1 ...
 $ SpF               : Factor w/ 2 levels "0","1": 2 2 2 1 1 2 2 1 2 2 ...
 $ DCS               : Factor w/ 4 levels "0","1","2","3": 1 2 2 1 2 2 1 1 2 2 ...
 $ PVS               : Factor w/ 3 levels "2","3","4": 1 2 2 1 2 1 1 1 2 1 ...
 $ DS                : Factor w/ 3 levels "0","1","2": 3 2 2 1 2 1 3 1 2 3 ...
 $ LS                : Factor w/ 3 levels "0","1","2": 1 2 2 2 1 1 1 1 1 1 ...
 $ VnS               : Factor w/ 2 levels "0","1": 2 2 1 1 1 1 1 1 1 1 ...
 $ NPRC              : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 2 1 1 ...
 $ SbO               : Factor w/ 2 levels "0","1": 1 2 NA 1 2 2 2 2 2 2 ...
 $ GF                : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
 $ EGFS              : Factor w/ 2 levels "0","1": 2 2 1 1 1 1 1 1 1 1 ...
 $ DHS               : Factor w/ 2 levels "0","1": 2 2 1 1 2 2 1 1 2 2 ...
 $ M                 : Factor w/ 2 levels "0","1": 1 2 1 1 2 2 1 1 2 2 ...
 $ TL4               : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ FL4               : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ DC                : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
 $ nPVS              : num [1:259] NA 85 75 81 77 78 81 91 87 86 ...
 $ nMS               : num [1:259] NA 71 59 55 60 57 54 59 59 59 ...
 $ nVrS              : num [1:259] NA 53 59 57 56 58 58 56 61 64 ...
 $ nVnS              : num [1:259] NA 44 44 48 46 50 46 50 55 48 ...
 $ nInL              : num [1:259] 8 10 10 10 8 10 10 12 9 9 ...
 $ nPM               : num [1:259] 3 4 2 2 2 2 2 2 2 2 ...
 $ ncPM              : num [1:259] 7 9 7 6 6 6 7 7 8 7 ...
 $ nGS               : num [1:259] 27 54 37 40 36 37 37 40 40 38 ...
 $ nCRo              : num [1:259] 4 5 4 4 4 4 5 4 5 4 ...
 $ nbNSpL            : num [1:259] 1 1 1 1 2 1 1 1 1 3 ...
 $ nLS               : num [1:259] 4 7 5 5 7 6 5 7 6 6 ...
 $ ncIp              : num [1:259] 7 10 NA 10 8 8 10 9 9 10 ...
 $ nbCoA             : num [1:259] 4 4 3 3 2 2 2 2 1 2 ...
 $ nSpL              : num [1:259] 5 11 10 11 11 11 10 11 11 9 ...
 $ nPR               : num [1:259] 8 6 6 7 8 7 8 6 5 7 ...
 $ nSbO              : num [1:259] 12 20 NA 14 12 15 13 14 17 11 ...
 $ nSpC              : num [1:259] 7 11 NA 10 10 12 9 11 11 11 ...
 $ nbSbOSpL          : num [1:259] 1 1 NA 1 1 1 1 1 2 1 ...
 $ TL                : num [1:259] NA 182 197 134 NA 205 149 169 213 224 ...
 $ SVL               : num [1:259] NA 94 90 67 118 105 67 80 97 120 ...
 $ sex               : Factor w/ 2 levels "F","M": NA NA NA NA NA NA NA NA NA NA ...
 $ n4TL              : num [1:259] NA 34 33 33 28 34 32 30 30 31 ...
 $ n4FL              : num [1:259] NA 24 22 19 17 22 21 19 21 20 ...
 $ nS4FL             : num [1:259] NA 0 3 4 2 2 4 3 3 4 ...
 $ nDlT              : num [1:259] NA 12 14 12 11 13 12 11 12 13 ...
 $ nArT              : num [1:259] NA 39 41 38 38 43 34 39 37 43 ...
 $ nAlT              : num [1:259] NA NA NA NA NA 117 NA 148 152 145 ...
data_enyalius_edit <- droplevels(data_enyalius[!data_enyalius$final_species_name == "bad_sample",])
data_enyalius_edit <- droplevels(data_enyalius_edit[!data_enyalius_edit$final_species_name == "unknown",])
keeps <- c("NPRC", "GF", "EGFS", "DHS", "TL4",
           "FL4", "nPVS", "nMS", "nVrS", "nVnS",
           "nPM", "ncPM", "nCRo", "nbNSpL", "ncIp", 
           "nbCoA", "nSbO", "nSpC", "TL", "n4TL",
           "nArT", "final_species_name")
data_enyalius_edit <- data_enyalius_edit[ ,keeps, drop = TRUE]
str(data_enyalius_edit)
tibble [228 x 22] (S3: tbl_df/tbl/data.frame)
 $ NPRC              : Factor w/ 2 levels "0","1": 1 1 1 1 2 1 1 1 1 1 ...
 $ GF                : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
 $ EGFS              : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 2 1 1 ...
 $ DHS               : Factor w/ 2 levels "0","1": 1 2 2 1 1 2 2 1 1 1 ...
 $ TL4               : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ FL4               : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ nPVS              : num [1:228] 81 77 78 81 91 87 86 77 96 82 ...
 $ nMS               : num [1:228] 55 60 57 54 59 59 59 60 58 57 ...
 $ nVrS              : num [1:228] 57 56 58 58 56 61 64 55 60 58 ...
 $ nVnS              : num [1:228] 48 46 50 46 50 55 48 46 51 43 ...
 $ nPM               : num [1:228] 2 2 2 2 2 2 2 2 2 2 ...
 $ ncPM              : num [1:228] 6 6 6 7 7 8 7 7 7 7 ...
 $ nCRo              : num [1:228] 4 4 4 5 4 5 4 4 4 5 ...
 $ nbNSpL            : num [1:228] 1 2 1 1 1 1 3 1 1 1 ...
 $ ncIp              : num [1:228] 10 8 8 10 9 9 10 7 8 9 ...
 $ nbCoA             : num [1:228] 3 2 2 2 2 1 2 2 2 3 ...
 $ nSbO              : num [1:228] 14 12 15 13 14 17 11 11 14 13 ...
 $ nSpC              : num [1:228] 10 10 12 9 11 11 11 10 11 10 ...
 $ TL                : num [1:228] 134 NA 205 149 169 213 224 155 213 71 ...
 $ n4TL              : num [1:228] 33 28 34 32 30 30 31 31 30 27 ...
 $ nArT              : num [1:228] 38 38 43 34 39 37 43 43 44 34 ...
 $ final_species_name: Factor w/ 13 levels "E_bibronii","E_bilineatus",..: 1 1 1 1 1 1 1 1 1 1 ...
### FABRICIUS VERIFICAR AQUI SE TODAS AS VARI�VEIS IMPORTANTES CONSTAM NA PLANILHA FINAL

Multiple imputation of missing data with mice

# Plotting NA's
md.pattern(data_enyalius_edit, rotate.names = TRUE)

    final_species_name NPRC FL4 nPVS nMS nVrS nPM ncPM nCRo nbCoA nSpC n4TL DHS
174                  1    1   1    1   1    1   1    1    1     1    1    1   1
19                   1    1   1    1   1    1   1    1    1     1    1    1   1
12                   1    1   1    1   1    1   1    1    1     1    1    1   1
1                    1    1   1    1   1    1   1    1    1     1    1    1   1
5                    1    1   1    1   1    1   1    1    1     1    1    1   1
4                    1    1   1    1   1    1   1    1    1     1    1    1   1
1                    1    1   1    1   1    1   1    1    1     1    1    1   1
1                    1    1   1    1   1    1   1    1    1     1    1    1   1
1                    1    1   1    1   1    1   1    1    1     1    1    1   1
1                    1    1   1    1   1    1   1    1    1     1    1    1   1
1                    1    1   1    1   1    1   1    1    1     1    1    1   1
1                    1    1   1    1   1    1   1    1    1     1    1    1   0
1                    1    1   1    1   1    1   1    1    1     1    1    0   1
1                    1    1   1    1   1    1   1    1    1     0    0    1   0
1                    1    1   1    1   1    1   1    1    0     1    1    1   1
1                    1    1   1    1   1    1   0    0    1     1    1    1   1
1                    1    1   1    0   0    0   1    1    1     1    1    1   1
1                    1    1   0    1   1    1   1    1    1     1    1    1   1
1                    1    0   1    1   1    1   1    1    1     1    1    1   1
                     0    1   1    1   1    1   1    1    1     1    1    1   2
    TL4 nbNSpL nSbO nVnS ncIp nArT GF TL EGFS   
174   1      1    1    1    1    1  1  1    1  0
19    1      1    1    1    1    1  1  1    0  1
12    1      1    1    1    1    1  1  0    1  1
1     1      1    1    1    1    1  1  0    0  2
5     1      1    1    1    1    1  0  1    0  2
4     1      1    1    1    1    0  1  1    1  1
1     1      1    1    1    1    0  1  1    0  2
1     1      1    1    1    0    1  1  1    1  1
1     1      1    1    0    1    1  0  0    0  4
1     1      1    0    1    0    1  1  1    1  2
1     0      1    1    1    1    1  1  1    1  1
1     1      1    1    1    1    1  1  1    0  2
1     0      1    1    1    1    1  1  1    0  3
1     1      1    0    1    0    1  1  1    1  5
1     1      0    1    1    1    1  0  1    0  4
1     1      1    1    1    1    1  1  1    1  2
1     1      1    1    0    1    1  1  1    1  4
1     1      1    1    1    1    1  1  1    1  1
1     1      0    1    0    1    1  1  1    1  3
      2      2    2    3    3    5  7 14   30 81
# Multiple imputation
imp <- mice(data_enyalius_edit,
            method = c("rf","rf","rf","rf","rf","rf","rf","rf","rf","rf",
                       "rf","rf","rf","rf","rf","rf","rf","rf","rf","rf",
                       "rf","rf"),
            maxit = 10, m = 10, print = FALSE, seed = 42)

# Listing the algorithms used for each trait
imp$meth
              NPRC                 GF               EGFS                DHS 
              "rf"               "rf"               "rf"               "rf" 
               TL4                FL4               nPVS                nMS 
              "rf"               "rf"               "rf"               "rf" 
              nVrS               nVnS                nPM               ncPM 
              "rf"               "rf"               "rf"               "rf" 
              nCRo             nbNSpL               ncIp              nbCoA 
              "rf"               "rf"               "rf"               "rf" 
              nSbO               nSpC                 TL               n4TL 
              "rf"               "rf"               "rf"               "rf" 
              nArT final_species_name 
              "rf"                 "" 
# Inspecting the quality of specific imputations
stripplot(imp, n4TL, pch = 20, xlab = "Imputation number", cex = 2)

# Prediction matrix
pred_matrix <- imp$pred

# Analyzing the convergence of imputations (the more lines are shuffled the better)
plot(imp)

# Exploring the matrix with imputed data
data_enyalius_imp <- complete(imp, 5)

md.pattern(data_enyalius_imp, rotate.names = TRUE)
 /\     /\
{  `---'  }
{  O   O  }
==>  V <==  No need for mice. This data set is completely observed.
 \  \|/  /
  `-----'

    NPRC GF EGFS DHS TL4 FL4 nPVS nMS nVrS nVnS nPM ncPM nCRo nbNSpL ncIp nbCoA
228    1  1    1   1   1   1    1   1    1    1   1    1    1      1    1     1
       0  0    0   0   0   0    0   0    0    0   0    0    0      0    0     0
    nSbO nSpC TL n4TL nArT final_species_name  
228    1    1  1    1    1                  1 0
       0    0  0    0    0                  0 0

Processing data set

# Partitioning the data into training and test sets (0.7 and 0.3)
set.seed(42)
trainIndex <- createDataPartition(data_enyalius_imp$final_species_name,
                                  p = 0.7,
                                  list = FALSE) 
trainingSet <- data_enyalius_imp[trainIndex,] 
testSet <- data_enyalius_imp[-trainIndex,] 

# One hot encoding and creating a matrix only with the predictors, omitting the response variable.
dummyModel <- dummyVars(~ ., data = trainingSet) 
dummyModel 
Dummy Variable Object

Formula: ~.
22 variables, 7 factors
Variables and levels will be separated by '.'
A less than full rank encoding is used
trainingSetX <- as.data.frame(predict(dummyModel, newdata = trainingSet)) 

# Transforming the variables into values from 0 to 1, standardizing in z-scores.
rangeModel <- preProcess(trainingSetX, method = "range")
trainingSetX <- predict(rangeModel, newdata = trainingSetX)

# Adding the response variable to the training set
trainingSet <- cbind(trainingSet$final_species_name, trainingSetX)
names(trainingSet)[1] <- "final_species_name"

# Doing the same procedures with the test set 
testSet_dummy <- predict(dummyModel, testSet) 
testSet_range <- predict(rangeModel, testSet_dummy) 
testSet_range <- data.frame(testSet_range) 
testSet <- cbind(testSet$final_species_name, testSet_range) 
names(testSet) <- names(trainingSet) 
testSet$final_species_name <- as.factor(testSet$final_species_name)

trainingSet_final <- trainingSet[,-c(29:41)]
trainingSet_final[,2:13] <- lapply(trainingSet_final[,2:13] , factor)
str(trainingSet_final)
'data.frame':   167 obs. of  28 variables:
 $ final_species_name: Factor w/ 13 levels "E_bibronii","E_bilineatus",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ NPRC.0            : Factor w/ 2 levels "0","1": 2 2 2 1 2 2 2 2 2 2 ...
 $ NPRC.1            : Factor w/ 2 levels "0","1": 1 1 1 2 1 1 1 1 1 1 ...
 $ GF.0              : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ GF.1              : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
 $ EGFS.0            : Factor w/ 2 levels "0","1": 2 2 2 2 2 1 2 2 2 2 ...
 $ EGFS.1            : Factor w/ 2 levels "0","1": 1 1 1 1 1 2 1 1 1 1 ...
 $ DHS.0             : Factor w/ 2 levels "0","1": 2 1 2 2 1 2 2 2 1 2 ...
 $ DHS.1             : Factor w/ 2 levels "0","1": 1 2 1 1 2 1 1 1 2 1 ...
 $ TL4.0             : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
 $ TL4.1             : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ FL4.0             : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
 $ FL4.1             : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ nPVS              : num  0.476 0.413 0.476 0.635 0.556 ...
 $ nMS               : num  0.372 0.488 0.349 0.465 0.465 ...
 $ nVrS              : num  0.11 0.102 0.119 0.102 0.169 ...
 $ nVnS              : num  0.528 0.472 0.472 0.583 0.528 ...
 $ nPM               : num  0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 ...
 $ ncPM              : num  0.222 0.222 0.333 0.333 0.333 ...
 $ nCRo              : num  0.25 0.25 0.5 0.25 0.25 0.25 0.25 0.5 0.5 0.25 ...
 $ nbNSpL            : num  0.25 0.5 0.25 0.25 0.75 0.25 0.25 0.25 0.25 0.25 ...
 $ ncIp              : num  0.444 0.222 0.444 0.333 0.444 ...
 $ nbCoA             : num  0.5 0.25 0.25 0.25 0.25 0.25 0.25 0.5 0.25 0.5 ...
 $ nSbO              : num  0.318 0.227 0.273 0.318 0.182 ...
 $ nSpC              : num  0.462 0.462 0.385 0.538 0.538 ...
 $ TL                : num  0.356 0.322 0.441 0.554 0.864 ...
 $ n4TL              : num  0.667 0.333 0.6 0.467 0.533 ...
 $ nArT              : num  0.439 0.439 0.341 0.463 0.561 ...
testSet_final <- testSet[,-c(29:41)]
testSet_final[,2:13] <- lapply(testSet_final[,2:13] , factor)
str(testSet_final)
'data.frame':   61 obs. of  28 variables:
 $ final_species_name: Factor w/ 13 levels "E_bibronii","E_bilineatus",..: 1 1 1 1 1 1 2 2 2 2 ...
 $ NPRC.0            : Factor w/ 2 levels "0","1": 2 2 2 2 1 1 1 1 1 1 ...
 $ NPRC.1            : Factor w/ 2 levels "0","1": 1 1 1 1 2 2 2 2 2 2 ...
 $ GF.0              : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ GF.1              : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
 $ EGFS.0            : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 1 1 ...
 $ EGFS.1            : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 2 2 ...
 $ DHS.0             : Factor w/ 2 levels "0","1": 1 1 1 2 1 1 2 1 2 2 ...
 $ DHS.1             : Factor w/ 2 levels "0","1": 2 2 2 1 2 2 1 2 1 1 ...
 $ TL4.0             : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
 $ TL4.1             : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ FL4.0             : Factor w/ 2 levels "0","1": 2 2 2 2 2 2 2 2 2 2 ...
 $ FL4.1             : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ nPVS              : num  0.429 0.571 0.651 0.476 0.746 ...
 $ nMS               : num  0.419 0.465 0.488 0.535 0.837 ...
 $ nVrS              : num  0.119 0.144 0.136 0.119 0.22 ...
 $ nVnS              : num  0.583 0.722 0.528 0.5 0.556 ...
 $ nPM               : num  0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 ...
 $ ncPM              : num  0.222 0.444 0.333 0.222 0.111 ...
 $ nCRo              : num  0.25 0.5 0.25 0.25 0.5 0.25 0.25 0.25 0.25 0.25 ...
 $ nbNSpL            : num  0.25 0.25 0.25 0.25 0.5 0.5 0.25 0.25 0.25 0.25 ...
 $ ncIp              : num  0.222 0.333 0.333 0.111 0.333 ...
 $ nbCoA             : num  0.25 0 0 0.25 0.75 0.5 0.5 0.75 0.25 0.5 ...
 $ nSbO              : num  0.364 0.455 0.182 0.318 0.364 ...
 $ nSpC              : num  0.615 0.538 0.308 0.462 0.462 ...
 $ TL                : num  0.757 0.802 0.514 0.113 0.475 ...
 $ n4TL              : num  0.733 0.467 0.667 0.6 0.733 ...
 $ nArT              : num  0.561 0.415 0.561 0.244 0.756 ...

Training machine learning algorithms

### Defining a training control
ctrl <- trainControl(method = "repeatedcv", classProbs = TRUE, number = 5,
                     repeats = 5, summaryFunction = defaultSummary)

### Predicting

# rpart (decision tress)
set.seed(42) 
rpart <- train(final_species_name ~.,
               data = trainingSet_final,
               method = "rpart",
               metric = "Accuracy",
               trControl = ctrl,
               na.action = na.omit
               )
fitted_rpart <- predict(rpart, testSet_final)
length(testSet_final$final_species_name)
[1] 61
length(fitted_rpart)
[1] 61
cf_rpart <- confusionMatrix(reference = testSet_final$final_species_name,
                data = fitted_rpart,
                mode = "everything")

# nnet
set.seed(42) 
nnet <- train(final_species_name ~.,
              data = trainingSet_final,
              method = "nnet",
              metric = "Accuracy",
              trControl = ctrl) 
# weights:  54
initial  value 385.529354 
iter  10 value 261.591635
iter  20 value 220.039136
iter  30 value 200.967879
iter  40 value 195.207890
iter  50 value 187.904963
iter  60 value 183.330696
iter  70 value 181.956675
iter  80 value 180.537430
iter  90 value 179.905974
iter 100 value 178.731093
final  value 178.731093 
stopped after 100 iterations
# weights:  136
initial  value 349.326393 
iter  10 value 209.389714
iter  20 value 111.193371
iter  30 value 87.090856
iter  40 value 72.182893
iter  50 value 60.985665
iter  60 value 47.763224
iter  70 value 42.000852
iter  80 value 38.424773
iter  90 value 36.356446
iter 100 value 35.616939
final  value 35.616939 
stopped after 100 iterations
# weights:  218
initial  value 372.410288 
iter  10 value 201.477827
iter  20 value 95.373960
iter  30 value 68.196642
iter  40 value 51.831111
iter  50 value 44.635519
iter  60 value 42.615988
iter  70 value 41.024927
iter  80 value 40.124978
iter  90 value 39.352024
iter 100 value 38.929968
final  value 38.929968 
stopped after 100 iterations
# weights:  54
initial  value 388.974553 
iter  10 value 258.605301
iter  20 value 237.397142
iter  30 value 236.713384
iter  40 value 236.695922
final  value 236.695634 
converged
# weights:  136
initial  value 346.513807 
iter  10 value 230.725494
iter  20 value 188.827647
iter  30 value 155.515571
iter  40 value 149.618550
iter  50 value 149.194315
iter  60 value 148.656291
iter  70 value 147.570587
iter  80 value 147.564051
final  value 147.564013 
converged
# weights:  218
initial  value 378.453928 
iter  10 value 250.074699
iter  20 value 175.155153
iter  30 value 145.681572
iter  40 value 138.860300
iter  50 value 128.808747
iter  60 value 122.906396
iter  70 value 120.813107
iter  80 value 120.643674
iter  90 value 120.611464
iter 100 value 120.607061
final  value 120.607061 
stopped after 100 iterations
# weights:  54
initial  value 362.167862 
iter  10 value 251.664016
iter  20 value 226.626596
iter  30 value 219.253850
iter  40 value 209.181768
iter  50 value 196.761775
iter  60 value 186.954488
iter  70 value 171.776171
iter  80 value 161.327846
iter  90 value 151.079422
iter 100 value 144.728061
final  value 144.728061 
stopped after 100 iterations
# weights:  136
initial  value 356.176488 
iter  10 value 210.922486
iter  20 value 133.401840
iter  30 value 97.026053
iter  40 value 77.382969
iter  50 value 62.672318
iter  60 value 55.257182
iter  70 value 51.252371
iter  80 value 47.699224
iter  90 value 45.454484
iter 100 value 42.387857
final  value 42.387857 
stopped after 100 iterations
# weights:  218
initial  value 353.304722 
iter  10 value 205.464704
iter  20 value 88.029613
iter  30 value 57.146671
iter  40 value 43.062997
iter  50 value 37.924271
iter  60 value 36.366920
iter  70 value 33.778706
iter  80 value 32.503951
iter  90 value 32.005333
iter 100 value 30.808761
final  value 30.808761 
stopped after 100 iterations
# weights:  54
initial  value 364.959768 
iter  10 value 270.723925
iter  20 value 226.784840
iter  30 value 205.689272
iter  40 value 198.772231
iter  50 value 196.655611
iter  60 value 195.330323
iter  70 value 192.710657
iter  80 value 189.725567
iter  90 value 188.952868
iter 100 value 187.772413
final  value 187.772413 
stopped after 100 iterations
# weights:  136
initial  value 364.359538 
iter  10 value 190.394574
iter  20 value 138.285576
iter  30 value 121.959292
iter  40 value 111.067304
iter  50 value 104.270538
iter  60 value 100.498698
iter  70 value 95.027094
iter  80 value 92.813914
iter  90 value 91.884767
iter 100 value 91.598950
final  value 91.598950 
stopped after 100 iterations
# weights:  218
initial  value 345.600273 
iter  10 value 189.123939
iter  20 value 103.264494
iter  30 value 74.020317
iter  40 value 56.990027
iter  50 value 49.065469
iter  60 value 47.143405
iter  70 value 46.751301
iter  80 value 46.582468
iter  90 value 46.306197
iter 100 value 46.228979
final  value 46.228979 
stopped after 100 iterations
# weights:  54
initial  value 355.405236 
iter  10 value 251.793579
iter  20 value 241.701007
iter  30 value 240.452947
iter  40 value 240.390649
final  value 240.390365 
converged
# weights:  136
initial  value 350.416715 
iter  10 value 236.558868
iter  20 value 186.489013
iter  30 value 158.429760
iter  40 value 154.790309
iter  50 value 154.216978
iter  60 value 154.079928
iter  70 value 153.135717
iter  80 value 151.539339
iter  90 value 149.311315
iter 100 value 149.111555
final  value 149.111555 
stopped after 100 iterations
# weights:  218
initial  value 340.493083 
iter  10 value 228.938076
iter  20 value 172.710278
iter  30 value 136.598143
iter  40 value 129.017018
iter  50 value 123.812184
iter  60 value 122.889648
iter  70 value 120.623424
iter  80 value 120.203711
iter  90 value 120.177581
iter 100 value 120.174722
final  value 120.174722 
stopped after 100 iterations
# weights:  54
initial  value 355.268367 
iter  10 value 269.858993
iter  20 value 209.998650
iter  30 value 187.442501
iter  40 value 172.631169
iter  50 value 167.290389
iter  60 value 161.327456
iter  70 value 154.915053
iter  80 value 151.159797
iter  90 value 149.954368
iter 100 value 148.925749
final  value 148.925749 
stopped after 100 iterations
# weights:  136
initial  value 372.174374 
iter  10 value 196.697420
iter  20 value 122.096845
iter  30 value 86.406492
iter  40 value 73.453984
iter  50 value 65.651613
iter  60 value 60.972350
iter  70 value 58.689724
iter  80 value 56.766598
iter  90 value 55.281950
iter 100 value 53.005179
final  value 53.005179 
stopped after 100 iterations
# weights:  218
initial  value 379.449720 
iter  10 value 195.945940
iter  20 value 64.050610
iter  30 value 19.801503
iter  40 value 10.991744
iter  50 value 8.965520
iter  60 value 7.688652
iter  70 value 7.208984
iter  80 value 5.248615
iter  90 value 4.325624
iter 100 value 3.944407
final  value 3.944407 
stopped after 100 iterations
# weights:  54
initial  value 343.398542 
iter  10 value 275.025744
iter  20 value 212.622878
iter  30 value 193.747890
iter  40 value 184.311451
iter  50 value 177.741165
iter  60 value 173.217097
iter  70 value 172.384883
iter  80 value 170.764335
iter  90 value 170.251251
iter 100 value 169.787727
final  value 169.787727 
stopped after 100 iterations
# weights:  136
initial  value 365.731800 
iter  10 value 232.525288
iter  20 value 126.296560
iter  30 value 94.618404
iter  40 value 83.913854
iter  50 value 80.139028
iter  60 value 78.522187
iter  70 value 77.107079
iter  80 value 76.040430
iter  90 value 74.821279
iter 100 value 73.705264
final  value 73.705264 
stopped after 100 iterations
# weights:  218
initial  value 368.413109 
iter  10 value 196.861870
iter  20 value 97.387890
iter  30 value 68.917329
iter  40 value 54.296705
iter  50 value 44.418022
iter  60 value 40.714118
iter  70 value 39.893105
iter  80 value 39.617015
iter  90 value 39.184556
iter 100 value 39.076882
final  value 39.076882 
stopped after 100 iterations
# weights:  54
initial  value 366.131396 
iter  10 value 299.036667
iter  20 value 270.762138
iter  30 value 254.399905
iter  40 value 248.175110
iter  50 value 245.185419
iter  60 value 245.137253
iter  70 value 245.135314
final  value 245.135290 
converged
# weights:  136
initial  value 379.005689 
iter  10 value 231.796213
iter  20 value 192.220355
iter  30 value 169.710704
iter  40 value 165.205164
iter  50 value 163.890325
iter  60 value 161.959202
iter  70 value 155.577555
iter  80 value 151.745258
iter  90 value 151.590516
iter 100 value 151.587262
final  value 151.587262 
stopped after 100 iterations
# weights:  218
initial  value 377.630505 
iter  10 value 234.827989
iter  20 value 167.742689
iter  30 value 142.737633
iter  40 value 131.698971
iter  50 value 122.835928
iter  60 value 121.195999
iter  70 value 120.476625
iter  80 value 119.671460
iter  90 value 119.583708
iter 100 value 119.578285
final  value 119.578285 
stopped after 100 iterations
# weights:  54
initial  value 368.186137 
iter  10 value 272.929001
iter  20 value 226.783172
iter  30 value 197.546782
iter  40 value 178.164490
iter  50 value 163.747856
iter  60 value 154.389872
iter  70 value 148.297760
iter  80 value 140.515789
iter  90 value 133.233916
iter 100 value 127.427128
final  value 127.427128 
stopped after 100 iterations
# weights:  136
initial  value 353.364797 
iter  10 value 229.644728
iter  20 value 132.596473
iter  30 value 93.400508
iter  40 value 76.321250
iter  50 value 66.308184
iter  60 value 61.698235
iter  70 value 57.313221
iter  80 value 54.170968
iter  90 value 49.578500
iter 100 value 46.764709
final  value 46.764709 
stopped after 100 iterations
# weights:  218
initial  value 373.258677 
iter  10 value 204.563381
iter  20 value 157.022722
iter  30 value 131.989539
iter  40 value 119.325342
iter  50 value 102.103499
iter  60 value 94.599496
iter  70 value 89.354559
iter  80 value 84.104327
iter  90 value 81.619216
iter 100 value 78.675823
final  value 78.675823 
stopped after 100 iterations
# weights:  54
initial  value 347.844924 
iter  10 value 272.744067
iter  20 value 214.603135
iter  30 value 193.071841
iter  40 value 182.896941
iter  50 value 178.424135
iter  60 value 176.223284
iter  70 value 174.560367
iter  80 value 172.936532
iter  90 value 172.435711
iter 100 value 172.180179
final  value 172.180179 
stopped after 100 iterations
# weights:  136
initial  value 355.829372 
iter  10 value 246.406913
iter  20 value 127.748386
iter  30 value 67.703695
iter  40 value 52.861378
iter  50 value 41.979988
iter  60 value 39.178485
iter  70 value 38.879739
iter  80 value 38.806956
iter  90 value 38.787066
iter 100 value 38.775115
final  value 38.775115 
stopped after 100 iterations
# weights:  218
initial  value 338.180722 
iter  10 value 189.382717
iter  20 value 89.684951
iter  30 value 48.086675
iter  40 value 29.307940
iter  50 value 19.657755
iter  60 value 10.468584
iter  70 value 4.481580
iter  80 value 1.067564
iter  90 value 0.296317
iter 100 value 0.104546
final  value 0.104546 
stopped after 100 iterations
# weights:  54
initial  value 338.352376 
iter  10 value 262.524714
iter  20 value 238.128461
iter  30 value 236.805801
iter  40 value 236.769300
final  value 236.769287 
converged
# weights:  136
initial  value 344.141481 
iter  10 value 224.721951
iter  20 value 185.915394
iter  30 value 177.409696
iter  40 value 161.769537
iter  50 value 156.190812
iter  60 value 150.301345
iter  70 value 145.308404
iter  80 value 145.057481
iter  90 value 145.051344
final  value 145.051247 
converged
# weights:  218
initial  value 360.094251 
iter  10 value 247.572418
iter  20 value 181.108835
iter  30 value 154.667195
iter  40 value 140.311731
iter  50 value 129.376838
iter  60 value 122.415580
iter  70 value 119.461801
iter  80 value 118.654051
iter  90 value 118.437974
iter 100 value 118.339302
final  value 118.339302 
stopped after 100 iterations
# weights:  54
initial  value 359.887318 
iter  10 value 265.692518
iter  20 value 217.666208
iter  30 value 206.100166
iter  40 value 200.271189
iter  50 value 193.500842
iter  60 value 190.122912
iter  70 value 188.278379
iter  80 value 186.118600
iter  90 value 185.273637
iter 100 value 184.788909
final  value 184.788909 
stopped after 100 iterations
# weights:  136
initial  value 371.305892 
iter  10 value 238.250313
iter  20 value 135.902584
iter  30 value 105.071957
iter  40 value 87.493947
iter  50 value 72.765850
iter  60 value 63.566989
iter  70 value 60.626119
iter  80 value 59.207265
iter  90 value 58.127415
iter 100 value 57.243910
final  value 57.243910 
stopped after 100 iterations
# weights:  218
initial  value 412.514718 
iter  10 value 298.872735
iter  20 value 184.943231
iter  30 value 118.986261
iter  40 value 85.467594
iter  50 value 73.770970
iter  60 value 61.973916
iter  70 value 33.678220
iter  80 value 28.347480
iter  90 value 25.118937
iter 100 value 22.368585
final  value 22.368585 
stopped after 100 iterations
# weights:  54
initial  value 351.668298 
iter  10 value 268.818366
iter  20 value 217.139467
iter  30 value 202.613630
iter  40 value 195.587262
iter  50 value 193.222246
iter  60 value 191.812283
iter  70 value 191.424178
iter  80 value 190.993963
iter  90 value 190.204450
iter 100 value 189.887750
final  value 189.887750 
stopped after 100 iterations
# weights:  136
initial  value 359.506625 
iter  10 value 234.894312
iter  20 value 160.851141
iter  30 value 132.749049
iter  40 value 118.229407
iter  50 value 99.923810
iter  60 value 89.947114
iter  70 value 84.468654
iter  80 value 80.248385
iter  90 value 76.554950
iter 100 value 72.701189
final  value 72.701189 
stopped after 100 iterations
# weights:  218
initial  value 368.524006 
iter  10 value 183.499821
iter  20 value 74.841406
iter  30 value 39.924852
iter  40 value 24.119479
iter  50 value 18.158299
iter  60 value 16.800652
iter  70 value 15.960671
iter  80 value 15.464734
iter  90 value 15.023948
iter 100 value 13.798286
final  value 13.798286 
stopped after 100 iterations
# weights:  54
initial  value 347.288966 
iter  10 value 264.992450
iter  20 value 246.450588
iter  30 value 238.288356
iter  40 value 237.798096
iter  50 value 237.792868
iter  50 value 237.792866
iter  50 value 237.792866
final  value 237.792866 
converged
# weights:  136
initial  value 370.413312 
iter  10 value 238.436481
iter  20 value 180.881069
iter  30 value 168.910924
iter  40 value 156.962921
iter  50 value 155.510327
iter  60 value 152.126801
iter  70 value 151.689221
iter  80 value 151.683116
final  value 151.683048 
converged
# weights:  218
initial  value 372.267759 
iter  10 value 229.781689
iter  20 value 168.647026
iter  30 value 146.596111
iter  40 value 137.008034
iter  50 value 131.545297
iter  60 value 128.625713
iter  70 value 127.319564
iter  80 value 126.967422
iter  90 value 126.918649
iter 100 value 126.775904
final  value 126.775904 
stopped after 100 iterations
# weights:  54
initial  value 344.628829 
iter  10 value 237.734553
iter  20 value 213.344009
iter  30 value 194.082511
iter  40 value 184.990970
iter  50 value 170.328090
iter  60 value 160.911806
iter  70 value 154.886502
iter  80 value 149.198413
iter  90 value 142.487060
iter 100 value 140.018124
final  value 140.018124 
stopped after 100 iterations
# weights:  136
initial  value 348.871336 
iter  10 value 216.272044
iter  20 value 146.376979
iter  30 value 127.260198
iter  40 value 118.147373
iter  50 value 113.395088
iter  60 value 110.427198
iter  70 value 107.400616
iter  80 value 100.959533
iter  90 value 99.021842
iter 100 value 96.882357
final  value 96.882357 
stopped after 100 iterations
# weights:  218
initial  value 365.370213 
iter  10 value 220.896416
iter  20 value 151.229204
iter  30 value 79.840691
iter  40 value 51.190672
iter  50 value 38.279853
iter  60 value 33.810416
iter  70 value 30.702932
iter  80 value 27.923340
iter  90 value 26.704560
iter 100 value 26.138667
final  value 26.138667 
stopped after 100 iterations
# weights:  54
initial  value 353.449104 
iter  10 value 289.956598
iter  20 value 216.193007
iter  30 value 197.198804
iter  40 value 190.386178
iter  50 value 186.749036
iter  60 value 185.454951
iter  70 value 183.192420
iter  80 value 182.560108
iter  90 value 182.383220
iter 100 value 182.239135
final  value 182.239135 
stopped after 100 iterations
# weights:  136
initial  value 345.553717 
iter  10 value 224.320376
iter  20 value 169.325031
iter  30 value 139.898954
iter  40 value 112.226040
iter  50 value 91.054217
iter  60 value 75.399448
iter  70 value 67.911684
iter  80 value 64.363295
iter  90 value 60.510796
iter 100 value 58.029336
final  value 58.029336 
stopped after 100 iterations
# weights:  218
initial  value 379.471291 
iter  10 value 179.692220
iter  20 value 95.098579
iter  30 value 48.364979
iter  40 value 29.903179
iter  50 value 14.353680
iter  60 value 8.556294
iter  70 value 5.797713
iter  80 value 5.619829
iter  90 value 5.605703
iter 100 value 5.602566
final  value 5.602566 
stopped after 100 iterations
# weights:  54
initial  value 337.651085 
iter  10 value 289.825951
iter  20 value 248.132096
iter  30 value 237.834050
iter  40 value 237.434296
iter  50 value 237.420444
final  value 237.420223 
converged
# weights:  136
initial  value 346.965998 
iter  10 value 220.309837
iter  20 value 169.725192
iter  30 value 154.557650
iter  40 value 148.461331
iter  50 value 147.904293
iter  60 value 147.886456
final  value 147.886284 
converged
# weights:  218
initial  value 368.168459 
iter  10 value 249.115678
iter  20 value 165.851948
iter  30 value 134.677982
iter  40 value 128.358598
iter  50 value 124.306319
iter  60 value 123.319702
iter  70 value 123.028036
iter  80 value 122.911385
iter  90 value 122.780622
iter 100 value 121.214780
final  value 121.214780 
stopped after 100 iterations
# weights:  54
initial  value 357.817481 
iter  10 value 239.251750
iter  20 value 205.897840
iter  30 value 187.246007
iter  40 value 173.217023
iter  50 value 163.135300
iter  60 value 155.442375
iter  70 value 153.765809
iter  80 value 153.230912
iter  90 value 152.660920
iter 100 value 151.532363
final  value 151.532363 
stopped after 100 iterations
# weights:  136
initial  value 374.327080 
iter  10 value 209.539195
iter  20 value 118.841813
iter  30 value 67.231736
iter  40 value 45.359850
iter  50 value 38.203435
iter  60 value 35.179465
iter  70 value 33.214761
iter  80 value 30.428059
iter  90 value 27.595036
iter 100 value 26.088724
final  value 26.088724 
stopped after 100 iterations
# weights:  218
initial  value 370.614429 
iter  10 value 198.353349
iter  20 value 107.680657
iter  30 value 54.585782
iter  40 value 27.739587
iter  50 value 17.168679
iter  60 value 12.757865
iter  70 value 11.182739
iter  80 value 10.096746
iter  90 value 7.004910
iter 100 value 5.617902
final  value 5.617902 
stopped after 100 iterations
# weights:  54
initial  value 342.717006 
iter  10 value 287.502861
iter  20 value 262.072687
iter  30 value 221.200258
iter  40 value 207.194423
iter  50 value 197.740433
iter  60 value 195.034896
iter  70 value 194.216624
iter  80 value 192.886295
iter  90 value 192.606720
iter 100 value 192.409680
final  value 192.409680 
stopped after 100 iterations
# weights:  136
initial  value 323.063944 
iter  10 value 196.634851
iter  20 value 91.754341
iter  30 value 67.517829
iter  40 value 53.850446
iter  50 value 43.689442
iter  60 value 41.314283
iter  70 value 40.441241
iter  80 value 40.109636
iter  90 value 39.921638
iter 100 value 39.741025
final  value 39.741025 
stopped after 100 iterations
# weights:  218
initial  value 353.835076 
iter  10 value 182.979612
iter  20 value 88.334281
iter  30 value 55.812651
iter  40 value 43.767629
iter  50 value 31.543473
iter  60 value 26.181861
iter  70 value 24.612767
iter  80 value 24.455460
iter  90 value 24.353873
iter 100 value 24.307966
final  value 24.307966 
stopped after 100 iterations
# weights:  54
initial  value 352.083532 
iter  10 value 249.158127
iter  20 value 234.992170
iter  30 value 233.991183
iter  40 value 233.950818
final  value 233.950795 
converged
# weights:  136
initial  value 360.158042 
iter  10 value 227.565625
iter  20 value 185.615653
iter  30 value 159.425961
iter  40 value 155.566433
iter  50 value 155.101179
iter  60 value 154.802381
iter  70 value 152.443791
iter  80 value 151.533122
iter  90 value 151.408670
iter 100 value 151.330845
final  value 151.330845 
stopped after 100 iterations
# weights:  218
initial  value 351.725537 
iter  10 value 254.690426
iter  20 value 168.854863
iter  30 value 145.625402
iter  40 value 136.346370
iter  50 value 129.931644
iter  60 value 126.707647
iter  70 value 125.251647
iter  80 value 124.121435
iter  90 value 123.787544
iter 100 value 123.777888
final  value 123.777888 
stopped after 100 iterations
# weights:  54
initial  value 374.423922 
iter  10 value 254.595577
iter  20 value 197.129817
iter  30 value 161.102548
iter  40 value 143.701865
iter  50 value 138.180635
iter  60 value 134.805037
iter  70 value 132.492287
iter  80 value 131.785392
iter  90 value 130.875514
iter 100 value 130.327714
final  value 130.327714 
stopped after 100 iterations
# weights:  136
initial  value 366.241250 
iter  10 value 238.764018
iter  20 value 129.291024
iter  30 value 94.245429
iter  40 value 74.883817
iter  50 value 66.626179
iter  60 value 62.455075
iter  70 value 60.770722
iter  80 value 59.925416
iter  90 value 58.736697
iter 100 value 57.152709
final  value 57.152709 
stopped after 100 iterations
# weights:  218
initial  value 355.805872 
iter  10 value 221.057916
iter  20 value 143.785535
iter  30 value 93.995724
iter  40 value 77.912300
iter  50 value 70.839249
iter  60 value 67.827193
iter  70 value 64.109211
iter  80 value 58.585968
iter  90 value 51.065246
iter 100 value 43.936131
final  value 43.936131 
stopped after 100 iterations
# weights:  54
initial  value 357.947103 
iter  10 value 271.906327
iter  20 value 228.418888
iter  30 value 204.256559
iter  40 value 194.468875
iter  50 value 186.521837
iter  60 value 175.152414
iter  70 value 164.405666
iter  80 value 160.985226
iter  90 value 156.161278
iter 100 value 153.121867
final  value 153.121867 
stopped after 100 iterations
# weights:  136
initial  value 392.257362 
iter  10 value 197.104178
iter  20 value 117.336773
iter  30 value 88.934457
iter  40 value 71.525102
iter  50 value 63.782366
iter  60 value 62.454841
iter  70 value 62.136211
iter  80 value 61.984613
iter  90 value 61.901043
iter 100 value 61.851040
final  value 61.851040 
stopped after 100 iterations
# weights:  218
initial  value 362.568877 
iter  10 value 223.714668
iter  20 value 135.094728
iter  30 value 79.194603
iter  40 value 59.399073
iter  50 value 51.827479
iter  60 value 48.180808
iter  70 value 46.468106
iter  80 value 45.715100
iter  90 value 45.220362
iter 100 value 45.087056
final  value 45.087056 
stopped after 100 iterations
# weights:  54
initial  value 349.202320 
iter  10 value 281.417626
iter  20 value 248.719477
iter  30 value 244.122525
iter  40 value 242.988290
iter  50 value 242.905351
iter  60 value 242.854196
final  value 242.854178 
converged
# weights:  136
initial  value 346.103462 
iter  10 value 217.848436
iter  20 value 170.576934
iter  30 value 159.685120
iter  40 value 156.751590
iter  50 value 156.235010
iter  60 value 155.620091
iter  70 value 155.600149
final  value 155.600050 
converged
# weights:  218
initial  value 396.427053 
iter  10 value 240.295736
iter  20 value 170.374936
iter  30 value 139.475142
iter  40 value 131.466147
iter  50 value 127.849782
iter  60 value 126.338159
iter  70 value 122.315713
iter  80 value 120.031056
iter  90 value 119.282637
iter 100 value 119.209822
final  value 119.209822 
stopped after 100 iterations
# weights:  54
initial  value 366.250636 
iter  10 value 313.119961
iter  20 value 245.103769
iter  30 value 233.581795
iter  40 value 228.503349
iter  50 value 227.616766
iter  60 value 227.172522
iter  70 value 226.962137
iter  80 value 226.461507
iter  90 value 226.215016
iter 100 value 226.170322
final  value 226.170322 
stopped after 100 iterations
# weights:  136
initial  value 436.083798 
iter  10 value 251.528314
iter  20 value 127.230911
iter  30 value 96.733012
iter  40 value 81.446453
iter  50 value 77.434765
iter  60 value 75.451827
iter  70 value 73.014664
iter  80 value 71.764524
iter  90 value 70.749880
iter 100 value 69.380016
final  value 69.380016 
stopped after 100 iterations
# weights:  218
initial  value 395.143913 
iter  10 value 199.517371
iter  20 value 76.154630
iter  30 value 38.542966
iter  40 value 23.094722
iter  50 value 16.474086
iter  60 value 15.387030
iter  70 value 13.398873
iter  80 value 11.737423
iter  90 value 10.449811
iter 100 value 9.296444
final  value 9.296444 
stopped after 100 iterations
# weights:  54
initial  value 350.266466 
iter  10 value 283.461576
iter  20 value 226.356469
iter  30 value 211.011849
iter  40 value 191.593108
iter  50 value 181.138692
iter  60 value 175.632450
iter  70 value 170.634164
iter  80 value 166.641451
iter  90 value 162.429494
iter 100 value 156.908059
final  value 156.908059 
stopped after 100 iterations
# weights:  136
initial  value 360.895459 
iter  10 value 189.197673
iter  20 value 114.333286
iter  30 value 90.725538
iter  40 value 77.640908
iter  50 value 68.726995
iter  60 value 63.407679
iter  70 value 60.092313
iter  80 value 58.172887
iter  90 value 55.808812
iter 100 value 54.274842
final  value 54.274842 
stopped after 100 iterations
# weights:  218
initial  value 350.065096 
iter  10 value 188.714113
iter  20 value 135.912624
iter  30 value 98.223570
iter  40 value 69.445015
iter  50 value 55.898077
iter  60 value 50.021823
iter  70 value 46.866789
iter  80 value 45.158561
iter  90 value 42.007906
iter 100 value 38.308362
final  value 38.308362 
stopped after 100 iterations
# weights:  54
initial  value 334.826785 
iter  10 value 262.117017
iter  20 value 242.212576
iter  30 value 239.668137
iter  40 value 239.510484
final  value 239.507745 
converged
# weights:  136
initial  value 351.571250 
iter  10 value 236.688664
iter  20 value 178.336055
iter  30 value 160.485356
iter  40 value 149.507687
iter  50 value 147.421437
iter  60 value 147.285096
final  value 147.284709 
converged
# weights:  218
initial  value 377.634552 
iter  10 value 230.764538
iter  20 value 159.746980
iter  30 value 136.544401
iter  40 value 131.447678
iter  50 value 128.321415
iter  60 value 126.042934
iter  70 value 124.766883
iter  80 value 124.115330
iter  90 value 122.848392
iter 100 value 122.195187
final  value 122.195187 
stopped after 100 iterations
# weights:  54
initial  value 361.089858 
iter  10 value 273.345709
iter  20 value 243.976327
iter  30 value 229.080672
iter  40 value 212.392881
iter  50 value 203.462144
iter  60 value 198.882541
iter  70 value 195.464635
iter  80 value 194.006209
iter  90 value 187.299129
iter 100 value 171.009776
final  value 171.009776 
stopped after 100 iterations
# weights:  136
initial  value 375.974621 
iter  10 value 194.726650
iter  20 value 122.121153
iter  30 value 92.266851
iter  40 value 71.513900
iter  50 value 62.298596
iter  60 value 57.959422
iter  70 value 55.478212
iter  80 value 54.460082
iter  90 value 53.841334
iter 100 value 53.253488
final  value 53.253488 
stopped after 100 iterations
# weights:  218
initial  value 358.842078 
iter  10 value 203.899151
iter  20 value 79.434463
iter  30 value 34.436823
iter  40 value 23.542027
iter  50 value 20.648998
iter  60 value 19.350143
iter  70 value 17.315154
iter  80 value 15.923716
iter  90 value 12.475067
iter 100 value 11.195519
final  value 11.195519 
stopped after 100 iterations
# weights:  54
initial  value 351.836372 
iter  10 value 258.686618
iter  20 value 224.884394
iter  30 value 208.376127
iter  40 value 198.191233
iter  50 value 184.588504
iter  60 value 178.158504
iter  70 value 167.710203
iter  80 value 153.616826
iter  90 value 146.838964
iter 100 value 142.951929
final  value 142.951929 
stopped after 100 iterations
# weights:  136
initial  value 379.762044 
iter  10 value 215.023838
iter  20 value 125.653303
iter  30 value 89.753172
iter  40 value 70.496693
iter  50 value 61.631508
iter  60 value 56.883443
iter  70 value 48.804265
iter  80 value 42.737835
iter  90 value 39.328083
iter 100 value 38.050659
final  value 38.050659 
stopped after 100 iterations
# weights:  218
initial  value 390.995954 
iter  10 value 179.187222
iter  20 value 86.868302
iter  30 value 62.544056
iter  40 value 43.730433
iter  50 value 27.738746
iter  60 value 19.603080
iter  70 value 15.697816
iter  80 value 15.033711
iter  90 value 14.971661
iter 100 value 14.962775
final  value 14.962775 
stopped after 100 iterations
# weights:  54
initial  value 367.830152 
iter  10 value 265.588725
iter  20 value 241.893369
iter  30 value 240.597388
iter  40 value 240.481682
final  value 240.481285 
converged
# weights:  136
initial  value 366.082327 
iter  10 value 245.125644
iter  20 value 179.217971
iter  30 value 152.963529
iter  40 value 150.827272
iter  50 value 150.580835
iter  60 value 149.827444
iter  70 value 149.394102
iter  80 value 149.382963
final  value 149.382821 
converged
# weights:  218
initial  value 385.787157 
iter  10 value 233.306277
iter  20 value 159.051294
iter  30 value 136.204370
iter  40 value 129.366840
iter  50 value 126.291139
iter  60 value 124.470787
iter  70 value 123.991800
iter  80 value 123.299068
iter  90 value 122.945378
iter 100 value 122.723374
final  value 122.723374 
stopped after 100 iterations
# weights:  54
initial  value 367.053244 
iter  10 value 249.620702
iter  20 value 209.612662
iter  30 value 190.303541
iter  40 value 178.310348
iter  50 value 166.365978
iter  60 value 152.351059
iter  70 value 147.416523
iter  80 value 142.959922
iter  90 value 142.556434
iter 100 value 142.245696
final  value 142.245696 
stopped after 100 iterations
# weights:  136
initial  value 344.419035 
iter  10 value 214.049997
iter  20 value 118.812400
iter  30 value 82.029870
iter  40 value 65.742462
iter  50 value 61.435136
iter  60 value 59.172772
iter  70 value 56.212564
iter  80 value 53.522956
iter  90 value 52.613945
iter 100 value 51.345490
final  value 51.345490 
stopped after 100 iterations
# weights:  218
initial  value 337.633187 
iter  10 value 186.059353
iter  20 value 100.702463
iter  30 value 63.194887
iter  40 value 49.148331
iter  50 value 43.139905
iter  60 value 39.245613
iter  70 value 36.846552
iter  80 value 35.881480
iter  90 value 34.911503
iter 100 value 32.931987
final  value 32.931987 
stopped after 100 iterations
# weights:  54
initial  value 370.442853 
iter  10 value 232.709073
iter  20 value 194.308366
iter  30 value 178.964628
iter  40 value 156.649544
iter  50 value 144.690036
iter  60 value 134.499127
iter  70 value 130.388030
iter  80 value 128.618094
iter  90 value 126.531109
iter 100 value 125.312540
final  value 125.312540 
stopped after 100 iterations
# weights:  136
initial  value 373.016701 
iter  10 value 218.954437
iter  20 value 140.220417
iter  30 value 100.943298
iter  40 value 78.042661
iter  50 value 68.030772
iter  60 value 65.994712
iter  70 value 65.273484
iter  80 value 64.755330
iter  90 value 64.303219
iter 100 value 62.978864
final  value 62.978864 
stopped after 100 iterations
# weights:  218
initial  value 377.040805 
iter  10 value 216.531924
iter  20 value 120.938203
iter  30 value 55.486873
iter  40 value 28.352845
iter  50 value 14.805868
iter  60 value 8.348375
iter  70 value 6.102164
iter  80 value 5.827947
iter  90 value 5.610106
iter 100 value 4.719466
final  value 4.719466 
stopped after 100 iterations
# weights:  54
initial  value 331.809906 
iter  10 value 265.460662
iter  20 value 236.994638
iter  30 value 234.779461
iter  40 value 234.566830
iter  50 value 234.337669
final  value 234.336034 
converged
# weights:  136
initial  value 361.571698 
iter  10 value 222.721761
iter  20 value 171.676206
iter  30 value 158.180410
iter  40 value 153.291446
iter  50 value 146.018414
iter  60 value 142.280729
iter  70 value 142.207358
final  value 142.207259 
converged
# weights:  218
initial  value 366.292251 
iter  10 value 229.269192
iter  20 value 157.199762
iter  30 value 133.981728
iter  40 value 129.220633
iter  50 value 124.693514
iter  60 value 121.887558
iter  70 value 121.340717
iter  80 value 121.138716
iter  90 value 118.704685
iter 100 value 117.607901
final  value 117.607901 
stopped after 100 iterations
# weights:  54
initial  value 362.705107 
iter  10 value 271.337039
iter  20 value 213.529661
iter  30 value 195.886446
iter  40 value 182.520450
iter  50 value 175.392774
iter  60 value 172.764449
iter  70 value 169.966450
iter  80 value 167.302034
iter  90 value 163.726346
iter 100 value 160.471709
final  value 160.471709 
stopped after 100 iterations
# weights:  136
initial  value 360.262907 
iter  10 value 211.434711
iter  20 value 153.640692
iter  30 value 123.175961
iter  40 value 104.306200
iter  50 value 93.305843
iter  60 value 87.589528
iter  70 value 84.730206
iter  80 value 81.485011
iter  90 value 80.505769
iter 100 value 78.654658
final  value 78.654658 
stopped after 100 iterations
# weights:  218
initial  value 369.037470 
iter  10 value 211.311004
iter  20 value 81.729816
iter  30 value 28.881679
iter  40 value 14.466455
iter  50 value 11.597385
iter  60 value 10.087488
iter  70 value 9.259961
iter  80 value 8.501711
iter  90 value 7.834392
iter 100 value 4.825643
final  value 4.825643 
stopped after 100 iterations
# weights:  54
initial  value 366.960590 
iter  10 value 241.196659
iter  20 value 227.624863
iter  30 value 211.233484
iter  40 value 206.657965
iter  50 value 203.359310
iter  60 value 202.361978
iter  70 value 200.887941
iter  80 value 196.418600
iter  90 value 194.290191
iter 100 value 193.413121
final  value 193.413121 
stopped after 100 iterations
# weights:  136
initial  value 347.642096 
iter  10 value 235.671743
iter  20 value 142.476678
iter  30 value 112.372249
iter  40 value 93.473229
iter  50 value 85.969522
iter  60 value 85.201783
iter  70 value 84.657146
iter  80 value 84.293576
iter  90 value 84.146364
iter 100 value 84.089212
final  value 84.089212 
stopped after 100 iterations
# weights:  218
initial  value 368.033511 
iter  10 value 197.531808
iter  20 value 100.250166
iter  30 value 61.658471
iter  40 value 33.211497
iter  50 value 18.803135
iter  60 value 12.008280
iter  70 value 10.267334
iter  80 value 9.561749
iter  90 value 9.489070
iter 100 value 9.476830
final  value 9.476830 
stopped after 100 iterations
# weights:  54
initial  value 395.003894 
iter  10 value 265.939723
iter  20 value 238.987856
iter  30 value 233.609027
iter  40 value 232.429614
iter  50 value 232.394317
final  value 232.394285 
converged
# weights:  136
initial  value 380.155979 
iter  10 value 275.762393
iter  20 value 207.260717
iter  30 value 189.425878
iter  40 value 171.000970
iter  50 value 160.551675
iter  60 value 150.989161
iter  70 value 148.681100
iter  80 value 147.106101
iter  90 value 145.331446
iter 100 value 144.822612
final  value 144.822612 
stopped after 100 iterations
# weights:  218
initial  value 394.191943 
iter  10 value 242.670877
iter  20 value 164.436778
iter  30 value 137.757072
iter  40 value 130.170196
iter  50 value 124.528652
iter  60 value 121.487675
iter  70 value 118.401382
iter  80 value 116.863749
iter  90 value 115.187206
iter 100 value 114.251854
final  value 114.251854 
stopped after 100 iterations
# weights:  54
initial  value 354.322584 
iter  10 value 258.395494
iter  20 value 217.111427
iter  30 value 204.102351
iter  40 value 198.360196
iter  50 value 197.805763
iter  60 value 197.285768
iter  70 value 196.895473
iter  80 value 196.627587
iter  90 value 196.483548
iter 100 value 196.203743
final  value 196.203743 
stopped after 100 iterations
# weights:  136
initial  value 342.949766 
iter  10 value 212.465872
iter  20 value 119.036082
iter  30 value 66.418808
iter  40 value 42.456842
iter  50 value 34.652699
iter  60 value 27.044239
iter  70 value 23.839736
iter  80 value 19.742207
iter  90 value 16.717258
iter 100 value 14.357249
final  value 14.357249 
stopped after 100 iterations
# weights:  218
initial  value 362.180151 
iter  10 value 207.044741
iter  20 value 138.782456
iter  30 value 96.759576
iter  40 value 60.303081
iter  50 value 47.982268
iter  60 value 34.449316
iter  70 value 26.209234
iter  80 value 22.553559
iter  90 value 20.111814
iter 100 value 17.917156
final  value 17.917156 
stopped after 100 iterations
# weights:  54
initial  value 355.389609 
iter  10 value 256.504962
iter  20 value 237.831224
iter  30 value 232.275645
iter  40 value 229.201359
iter  50 value 229.032123
iter  60 value 228.421462
iter  70 value 228.317345
iter  80 value 228.238147
iter  90 value 228.225844
iter 100 value 228.224093
final  value 228.224093 
stopped after 100 iterations
# weights:  136
initial  value 379.922790 
iter  10 value 252.307792
iter  20 value 139.268848
iter  30 value 93.530189
iter  40 value 57.763878
iter  50 value 37.835932
iter  60 value 30.295411
iter  70 value 27.097140
iter  80 value 26.185251
iter  90 value 25.929045
iter 100 value 25.788897
final  value 25.788897 
stopped after 100 iterations
# weights:  218
initial  value 346.093455 
iter  10 value 206.037182
iter  20 value 94.378973
iter  30 value 57.601256
iter  40 value 29.178438
iter  50 value 19.628941
iter  60 value 16.057128
iter  70 value 15.644405
iter  80 value 15.526286
iter  90 value 15.466514
iter 100 value 15.425200
final  value 15.425200 
stopped after 100 iterations
# weights:  54
initial  value 355.027605 
iter  10 value 265.133955
iter  20 value 241.411029
iter  30 value 239.381775
iter  40 value 239.337074
final  value 239.336770 
converged
# weights:  136
initial  value 369.088220 
iter  10 value 241.120028
iter  20 value 179.223685
iter  30 value 164.308473
iter  40 value 156.704680
iter  50 value 151.762036
iter  60 value 150.678318
iter  70 value 150.642147
final  value 150.641439 
converged
# weights:  218
initial  value 360.138726 
iter  10 value 236.761942
iter  20 value 153.887085
iter  30 value 136.419312
iter  40 value 131.032905
iter  50 value 127.228395
iter  60 value 123.906917
iter  70 value 121.656356
iter  80 value 120.885108
iter  90 value 120.846884
iter 100 value 120.844843
final  value 120.844843 
stopped after 100 iterations
# weights:  54
initial  value 335.547737 
iter  10 value 300.437579
iter  20 value 224.580604
iter  30 value 198.006223
iter  40 value 184.933162
iter  50 value 179.509217
iter  60 value 169.615942
iter  70 value 161.889711
iter  80 value 156.695745
iter  90 value 154.072925
iter 100 value 148.403907
final  value 148.403907 
stopped after 100 iterations
# weights:  136
initial  value 376.855783 
iter  10 value 188.175542
iter  20 value 126.950503
iter  30 value 96.437440
iter  40 value 78.687260
iter  50 value 71.495604
iter  60 value 70.114526
iter  70 value 68.644528
iter  80 value 64.305795
iter  90 value 62.539088
iter 100 value 60.641258
final  value 60.641258 
stopped after 100 iterations
# weights:  218
initial  value 388.555187 
iter  10 value 254.964868
iter  20 value 193.943696
iter  30 value 164.604896
iter  40 value 155.921349
iter  50 value 152.995095
iter  60 value 144.505612
iter  70 value 131.496864
iter  80 value 122.866523
iter  90 value 119.368490
iter 100 value 111.659771
final  value 111.659771 
stopped after 100 iterations
# weights:  54
initial  value 350.756460 
iter  10 value 260.967874
iter  20 value 204.115446
iter  30 value 181.666966
iter  40 value 169.854049
iter  50 value 165.722350
iter  60 value 163.884286
iter  70 value 161.864353
iter  80 value 161.145626
iter  90 value 159.103160
iter 100 value 158.319604
final  value 158.319604 
stopped after 100 iterations
# weights:  136
initial  value 395.567707 
iter  10 value 266.330232
iter  20 value 193.413563
iter  30 value 162.827675
iter  40 value 141.226598
iter  50 value 117.193709
iter  60 value 113.366546
iter  70 value 110.767668
iter  80 value 108.383851
iter  90 value 106.578608
iter 100 value 105.148114
final  value 105.148114 
stopped after 100 iterations
# weights:  218
initial  value 374.537813 
iter  10 value 211.652648
iter  20 value 149.879913
iter  30 value 105.181861
iter  40 value 80.153821
iter  50 value 63.530732
iter  60 value 51.098321
iter  70 value 41.571231
iter  80 value 36.102684
iter  90 value 34.388622
iter 100 value 33.593671
final  value 33.593671 
stopped after 100 iterations
# weights:  54
initial  value 368.237831 
iter  10 value 262.787285
iter  20 value 241.453672
iter  30 value 240.592556
iter  40 value 240.548348
final  value 240.548245 
converged
# weights:  136
initial  value 375.706449 
iter  10 value 245.734605
iter  20 value 201.879494
iter  30 value 175.120531
iter  40 value 161.261857
iter  50 value 154.811178
iter  60 value 153.341611
iter  70 value 152.907545
iter  80 value 152.871493
iter  90 value 152.870562
final  value 152.870557 
converged
# weights:  218
initial  value 364.623066 
iter  10 value 223.923660
iter  20 value 156.963650
iter  30 value 139.153940
iter  40 value 136.990406
iter  50 value 133.976424
iter  60 value 129.208844
iter  70 value 124.631064
iter  80 value 121.153907
iter  90 value 120.763431
iter 100 value 120.732224
final  value 120.732224 
stopped after 100 iterations
# weights:  54
initial  value 355.097311 
iter  10 value 265.269355
iter  20 value 217.376660
iter  30 value 193.704212
iter  40 value 179.220854
iter  50 value 170.014793
iter  60 value 167.278892
iter  70 value 159.962585
iter  80 value 153.650041
iter  90 value 147.363696
iter 100 value 146.114487
final  value 146.114487 
stopped after 100 iterations
# weights:  136
initial  value 393.506410 
iter  10 value 234.965583
iter  20 value 103.537162
iter  30 value 73.427704
iter  40 value 54.488732
iter  50 value 45.173568
iter  60 value 40.521727
iter  70 value 33.561328
iter  80 value 26.505692
iter  90 value 19.559006
iter 100 value 18.234740
final  value 18.234740 
stopped after 100 iterations
# weights:  218
initial  value 418.504385 
iter  10 value 239.000010
iter  20 value 126.192992
iter  30 value 62.286687
iter  40 value 32.809803
iter  50 value 21.349833
iter  60 value 15.376637
iter  70 value 14.515029
iter  80 value 13.910728
iter  90 value 12.695931
iter 100 value 8.786210
final  value 8.786210 
stopped after 100 iterations
# weights:  54
initial  value 403.242807 
iter  10 value 244.228575
iter  20 value 216.285785
iter  30 value 191.601114
iter  40 value 174.036707
iter  50 value 167.498951
iter  60 value 160.550092
iter  70 value 152.789693
iter  80 value 147.636039
iter  90 value 143.787270
iter 100 value 142.401561
final  value 142.401561 
stopped after 100 iterations
# weights:  136
initial  value 371.544644 
iter  10 value 296.650249
iter  20 value 190.407978
iter  30 value 136.052393
iter  40 value 116.277981
iter  50 value 111.494953
iter  60 value 108.234326
iter  70 value 106.107126
iter  80 value 104.517054
iter  90 value 104.008765
iter 100 value 103.693582
final  value 103.693582 
stopped after 100 iterations
# weights:  218
initial  value 364.045197 
iter  10 value 189.480532
iter  20 value 94.624327
iter  30 value 57.735619
iter  40 value 38.006734
iter  50 value 28.850776
iter  60 value 25.736552
iter  70 value 24.263486
iter  80 value 23.822003
iter  90 value 23.582266
iter 100 value 23.531684
final  value 23.531684 
stopped after 100 iterations
# weights:  54
initial  value 351.532981 
iter  10 value 288.601115
iter  20 value 253.392269
iter  30 value 247.842818
iter  40 value 247.639705
final  value 247.638771 
converged
# weights:  136
initial  value 359.678482 
iter  10 value 240.383780
iter  20 value 189.955198
iter  30 value 167.260009
iter  40 value 160.137343
iter  50 value 158.550052
iter  60 value 158.492636
iter  70 value 158.491840
final  value 158.491835 
converged
# weights:  218
initial  value 377.108192 
iter  10 value 232.491076
iter  20 value 171.537737
iter  30 value 156.599147
iter  40 value 138.828306
iter  50 value 130.345405
iter  60 value 127.162834
iter  70 value 125.826624
iter  80 value 125.578045
iter  90 value 125.446543
iter 100 value 124.822853
final  value 124.822853 
stopped after 100 iterations
# weights:  54
initial  value 361.342703 
iter  10 value 272.651602
iter  20 value 224.736652
iter  30 value 203.089943
iter  40 value 190.012803
iter  50 value 182.784284
iter  60 value 177.463534
iter  70 value 171.443437
iter  80 value 165.343503
iter  90 value 163.290865
iter 100 value 160.269786
final  value 160.269786 
stopped after 100 iterations
# weights:  136
initial  value 346.415252 
iter  10 value 220.682385
iter  20 value 164.919824
iter  30 value 124.126452
iter  40 value 110.090011
iter  50 value 100.793682
iter  60 value 95.168694
iter  70 value 92.637100
iter  80 value 90.890904
iter  90 value 90.036051
iter 100 value 89.180616
final  value 89.180616 
stopped after 100 iterations
# weights:  218
initial  value 381.943660 
iter  10 value 204.889279
iter  20 value 156.628741
iter  30 value 121.237551
iter  40 value 103.160452
iter  50 value 94.070055
iter  60 value 92.669122
iter  70 value 90.347795
iter  80 value 88.460442
iter  90 value 87.935179
iter 100 value 86.348406
final  value 86.348406 
stopped after 100 iterations
# weights:  54
initial  value 340.206023 
iter  10 value 260.186673
iter  20 value 225.692079
iter  30 value 215.364643
iter  40 value 206.509282
iter  50 value 205.590974
iter  60 value 205.095124
iter  70 value 204.534081
iter  80 value 203.403417
iter  90 value 201.949372
iter 100 value 200.208622
final  value 200.208622 
stopped after 100 iterations
# weights:  136
initial  value 345.645680 
iter  10 value 188.755037
iter  20 value 114.277622
iter  30 value 82.456346
iter  40 value 63.086086
iter  50 value 51.337732
iter  60 value 44.338668
iter  70 value 43.822388
iter  80 value 43.591032
iter  90 value 43.445262
iter 100 value 43.337188
final  value 43.337188 
stopped after 100 iterations
# weights:  218
initial  value 349.593237 
iter  10 value 197.640123
iter  20 value 91.827289
iter  30 value 53.099706
iter  40 value 34.047814
iter  50 value 19.967966
iter  60 value 13.489869
iter  70 value 11.143229
iter  80 value 10.227791
iter  90 value 8.771796
iter 100 value 8.424561
final  value 8.424561 
stopped after 100 iterations
# weights:  54
initial  value 343.489069 
iter  10 value 270.902226
iter  20 value 245.109614
iter  30 value 240.435131
iter  40 value 238.532160
iter  50 value 238.515981
final  value 238.515940 
converged
# weights:  136
initial  value 366.070604 
iter  10 value 228.456527
iter  20 value 175.109164
iter  30 value 160.703893
iter  40 value 154.148350
iter  50 value 150.386116
iter  60 value 148.501473
iter  70 value 148.229835
iter  80 value 148.211953
final  value 148.211517 
converged
# weights:  218
initial  value 365.101320 
iter  10 value 219.569601
iter  20 value 159.558639
iter  30 value 137.840597
iter  40 value 130.590261
iter  50 value 125.940125
iter  60 value 123.884799
iter  70 value 123.063302
iter  80 value 122.842870
iter  90 value 122.806771
iter 100 value 122.786862
final  value 122.786862 
stopped after 100 iterations
# weights:  54
initial  value 378.140940 
iter  10 value 259.809784
iter  20 value 225.637277
iter  30 value 211.249796
iter  40 value 205.717345
iter  50 value 204.490110
iter  60 value 203.439404
iter  70 value 202.328741
iter  80 value 202.046065
iter  90 value 201.844470
iter 100 value 201.578426
final  value 201.578426 
stopped after 100 iterations
# weights:  136
initial  value 343.428534 
iter  10 value 175.840451
iter  20 value 127.598078
iter  30 value 104.828797
iter  40 value 92.810647
iter  50 value 86.249551
iter  60 value 82.980916
iter  70 value 80.433021
iter  80 value 78.781084
iter  90 value 77.500496
iter 100 value 77.060340
final  value 77.060340 
stopped after 100 iterations
# weights:  218
initial  value 381.926101 
iter  10 value 206.821607
iter  20 value 102.235169
iter  30 value 54.595264
iter  40 value 38.583342
iter  50 value 27.307471
iter  60 value 19.400344
iter  70 value 16.603489
iter  80 value 13.868275
iter  90 value 11.065175
iter 100 value 8.223805
final  value 8.223805 
stopped after 100 iterations
# weights:  54
initial  value 367.522430 
iter  10 value 274.968288
iter  20 value 219.141578
iter  30 value 192.238924
iter  40 value 172.013907
iter  50 value 157.540946
iter  60 value 152.148795
iter  70 value 147.088146
iter  80 value 143.796273
iter  90 value 141.751193
iter 100 value 139.549347
final  value 139.549347 
stopped after 100 iterations
# weights:  136
initial  value 342.355304 
iter  10 value 209.899360
iter  20 value 130.589498
iter  30 value 100.867423
iter  40 value 86.300247
iter  50 value 78.021967
iter  60 value 73.090232
iter  70 value 71.417508
iter  80 value 70.925402
iter  90 value 70.333340
iter 100 value 69.951326
final  value 69.951326 
stopped after 100 iterations
# weights:  218
initial  value 334.912557 
iter  10 value 203.749582
iter  20 value 132.064085
iter  30 value 91.244026
iter  40 value 67.149521
iter  50 value 56.044212
iter  60 value 48.887178
iter  70 value 44.364349
iter  80 value 42.673982
iter  90 value 41.892675
iter 100 value 41.689202
final  value 41.689202 
stopped after 100 iterations
# weights:  54
initial  value 364.971274 
iter  10 value 271.395790
iter  20 value 244.145422
iter  30 value 242.605288
iter  40 value 242.582581
final  value 242.582571 
converged
# weights:  136
initial  value 396.424183 
iter  10 value 237.760082
iter  20 value 184.252872
iter  30 value 172.970787
iter  40 value 169.964963
iter  50 value 162.856645
iter  60 value 156.048389
iter  70 value 153.641309
iter  80 value 153.526268
final  value 153.525882 
converged
# weights:  218
initial  value 353.044645 
iter  10 value 255.838598
iter  20 value 169.822395
iter  30 value 146.694730
iter  40 value 134.222028
iter  50 value 129.420721
iter  60 value 126.898300
iter  70 value 126.092284
iter  80 value 125.040455
iter  90 value 123.788746
iter 100 value 123.611325
final  value 123.611325 
stopped after 100 iterations
# weights:  54
initial  value 338.672995 
iter  10 value 250.254543
iter  20 value 240.727854
iter  30 value 231.588847
iter  40 value 223.857166
iter  50 value 218.183681
iter  60 value 216.346743
iter  70 value 216.127864
iter  80 value 216.021109
iter  90 value 215.594922
iter 100 value 214.826657
final  value 214.826657 
stopped after 100 iterations
# weights:  136
initial  value 339.532305 
iter  10 value 214.579213
iter  20 value 172.675593
iter  30 value 153.468211
iter  40 value 135.687293
iter  50 value 129.366811
iter  60 value 125.103761
iter  70 value 123.983279
iter  80 value 122.951958
iter  90 value 121.310878
iter 100 value 119.452552
final  value 119.452552 
stopped after 100 iterations
# weights:  218
initial  value 363.330491 
iter  10 value 169.623283
iter  20 value 94.774066
iter  30 value 52.280350
iter  40 value 29.077859
iter  50 value 22.496873
iter  60 value 20.213651
iter  70 value 18.762369
iter  80 value 18.026843
iter  90 value 15.667944
iter 100 value 12.566888
final  value 12.566888 
stopped after 100 iterations
# weights:  54
initial  value 336.090437 
iter  10 value 241.499173
iter  20 value 203.005091
iter  30 value 174.002750
iter  40 value 162.497670
iter  50 value 149.706755
iter  60 value 146.011161
iter  70 value 144.195873
iter  80 value 142.684559
iter  90 value 140.466694
iter 100 value 138.908568
final  value 138.908568 
stopped after 100 iterations
# weights:  136
initial  value 345.226187 
iter  10 value 202.706019
iter  20 value 115.311655
iter  30 value 83.253974
iter  40 value 76.996420
iter  50 value 74.719720
iter  60 value 73.664267
iter  70 value 73.409066
iter  80 value 73.136775
iter  90 value 72.956884
iter 100 value 72.926574
final  value 72.926574 
stopped after 100 iterations
# weights:  218
initial  value 388.601181 
iter  10 value 204.328033
iter  20 value 121.498376
iter  30 value 58.564500
iter  40 value 22.922942
iter  50 value 12.935922
iter  60 value 10.867554
iter  70 value 8.415969
iter  80 value 7.452232
iter  90 value 7.352243
iter 100 value 7.341250
final  value 7.341250 
stopped after 100 iterations
# weights:  54
initial  value 368.561773 
iter  10 value 290.917923
iter  20 value 248.309317
iter  30 value 244.895918
iter  40 value 241.734384
iter  50 value 241.546923
iter  60 value 241.536786
final  value 241.536775 
converged
# weights:  136
initial  value 374.894785 
iter  10 value 228.225455
iter  20 value 173.620154
iter  30 value 159.200829
iter  40 value 157.366975
iter  50 value 153.525747
iter  60 value 153.007056
iter  70 value 153.001710
final  value 153.001663 
converged
# weights:  218
initial  value 333.308723 
iter  10 value 215.265984
iter  20 value 154.450134
iter  30 value 128.226747
iter  40 value 122.656784
iter  50 value 121.049131
iter  60 value 119.978470
iter  70 value 119.604559
iter  80 value 119.390855
iter  90 value 118.495848
iter 100 value 117.847753
final  value 117.847753 
stopped after 100 iterations
# weights:  54
initial  value 348.287064 
iter  10 value 306.673347
iter  20 value 230.546679
iter  30 value 200.788345
iter  40 value 188.307474
iter  50 value 183.231151
iter  60 value 181.541043
iter  70 value 180.902740
iter  80 value 180.181211
iter  90 value 179.450250
iter 100 value 177.712317
final  value 177.712317 
stopped after 100 iterations
# weights:  136
initial  value 355.462492 
iter  10 value 227.453010
iter  20 value 167.375441
iter  30 value 132.609343
iter  40 value 120.992347
iter  50 value 111.577000
iter  60 value 106.555198
iter  70 value 102.927552
iter  80 value 99.516050
iter  90 value 93.253910
iter 100 value 89.784210
final  value 89.784210 
stopped after 100 iterations
# weights:  218
initial  value 386.240441 
iter  10 value 216.879879
iter  20 value 107.616321
iter  30 value 65.935815
iter  40 value 47.837374
iter  50 value 37.430778
iter  60 value 33.386674
iter  70 value 28.920679
iter  80 value 24.191330
iter  90 value 20.177988
iter 100 value 18.296085
final  value 18.296085 
stopped after 100 iterations
# weights:  54
initial  value 376.495492 
iter  10 value 263.793509
iter  20 value 228.993420
iter  30 value 214.571422
iter  40 value 208.438678
iter  50 value 205.354953
iter  60 value 202.834629
iter  70 value 201.325713
iter  80 value 199.731857
iter  90 value 199.131664
iter 100 value 198.855732
final  value 198.855732 
stopped after 100 iterations
# weights:  136
initial  value 357.228725 
iter  10 value 211.494108
iter  20 value 107.863586
iter  30 value 57.680880
iter  40 value 40.970494
iter  50 value 32.275346
iter  60 value 25.985922
iter  70 value 24.191713
iter  80 value 23.237025
iter  90 value 22.833822
iter 100 value 22.282667
final  value 22.282667 
stopped after 100 iterations
# weights:  218
initial  value 405.787246 
iter  10 value 268.563388
iter  20 value 139.354720
iter  30 value 77.059549
iter  40 value 52.216790
iter  50 value 42.184940
iter  60 value 36.732860
iter  70 value 32.667093
iter  80 value 31.995563
iter  90 value 26.907325
iter 100 value 25.080095
final  value 25.080095 
stopped after 100 iterations
# weights:  54
initial  value 376.110113 
iter  10 value 262.126802
iter  20 value 243.358549
iter  30 value 240.796816
iter  40 value 240.428905
final  value 240.428559 
converged
# weights:  136
initial  value 365.920257 
iter  10 value 231.499348
iter  20 value 185.308811
iter  30 value 171.256553
iter  40 value 164.215552
iter  50 value 159.375582
iter  60 value 157.848670
iter  70 value 157.657933
iter  80 value 157.624277
final  value 157.623686 
converged
# weights:  218
initial  value 363.187998 
iter  10 value 226.729047
iter  20 value 159.548462
iter  30 value 139.008038
iter  40 value 129.611074
iter  50 value 125.722586
iter  60 value 122.330459
iter  70 value 121.194245
iter  80 value 120.465065
iter  90 value 119.532726
iter 100 value 119.206738
final  value 119.206738 
stopped after 100 iterations
# weights:  54
initial  value 347.227562 
iter  10 value 263.223252
iter  20 value 223.669332
iter  30 value 207.569503
iter  40 value 199.735836
iter  50 value 192.899882
iter  60 value 191.073010
iter  70 value 189.403372
iter  80 value 188.019212
iter  90 value 179.702263
iter 100 value 173.520756
final  value 173.520756 
stopped after 100 iterations
# weights:  136
initial  value 362.654534 
iter  10 value 227.902438
iter  20 value 160.103278
iter  30 value 110.936140
iter  40 value 96.434608
iter  50 value 83.528500
iter  60 value 76.723279
iter  70 value 69.749266
iter  80 value 67.809154
iter  90 value 66.976023
iter 100 value 65.691546
final  value 65.691546 
stopped after 100 iterations
# weights:  218
initial  value 377.917058 
iter  10 value 211.903652
iter  20 value 135.291577
iter  30 value 107.118441
iter  40 value 91.973123
iter  50 value 87.512275
iter  60 value 86.763130
iter  70 value 86.130830
iter  80 value 85.839602
iter  90 value 84.697897
iter 100 value 83.646403
final  value 83.646403 
stopped after 100 iterations
# weights:  54
initial  value 362.415367 
iter  10 value 259.953094
iter  20 value 225.216492
iter  30 value 210.119595
iter  40 value 204.492185
iter  50 value 200.830247
iter  60 value 193.871242
iter  70 value 186.356313
iter  80 value 184.875130
iter  90 value 183.933796
iter 100 value 180.534403
final  value 180.534403 
stopped after 100 iterations
# weights:  136
initial  value 346.084150 
iter  10 value 193.508819
iter  20 value 133.262832
iter  30 value 103.599855
iter  40 value 88.042575
iter  50 value 81.745940
iter  60 value 79.351946
iter  70 value 78.515836
iter  80 value 77.771136
iter  90 value 76.808190
iter 100 value 76.312649
final  value 76.312649 
stopped after 100 iterations
# weights:  218
initial  value 384.333699 
iter  10 value 205.141152
iter  20 value 88.537036
iter  30 value 47.391562
iter  40 value 30.545996
iter  50 value 22.303128
iter  60 value 20.448975
iter  70 value 20.001120
iter  80 value 19.825814
iter  90 value 19.801371
iter 100 value 19.778055
final  value 19.778055 
stopped after 100 iterations
# weights:  54
initial  value 343.109108 
iter  10 value 276.815384
iter  20 value 241.204076
iter  30 value 236.535298
iter  40 value 236.285007
final  value 236.284623 
converged
# weights:  136
initial  value 363.729285 
iter  10 value 238.681201
iter  20 value 171.559276
iter  30 value 154.536236
iter  40 value 151.897850
iter  50 value 151.333679
iter  60 value 149.478255
iter  70 value 148.639158
iter  80 value 148.499258
iter  90 value 148.497748
final  value 148.497745 
converged
# weights:  218
initial  value 374.178847 
iter  10 value 217.341267
iter  20 value 148.654059
iter  30 value 136.269798
iter  40 value 130.814073
iter  50 value 123.919987
iter  60 value 121.942053
iter  70 value 121.510036
iter  80 value 121.448088
iter  90 value 120.981532
iter 100 value 120.749641
final  value 120.749641 
stopped after 100 iterations
# weights:  54
initial  value 352.689939 
iter  10 value 283.226661
iter  20 value 259.658105
iter  30 value 252.068903
iter  40 value 249.842110
iter  50 value 249.492987
iter  60 value 249.414055
iter  70 value 249.295573
iter  80 value 249.263487
iter  90 value 249.049111
iter 100 value 248.937216
final  value 248.937216 
stopped after 100 iterations
# weights:  136
initial  value 349.304723 
iter  10 value 192.734507
iter  20 value 112.449302
iter  30 value 74.236107
iter  40 value 58.459078
iter  50 value 53.428843
iter  60 value 51.543513
iter  70 value 50.295489
iter  80 value 49.044906
iter  90 value 45.320418
iter 100 value 43.294486
final  value 43.294486 
stopped after 100 iterations
# weights:  218
initial  value 418.977414 
iter  10 value 194.594812
iter  20 value 83.154469
iter  30 value 45.444406
iter  40 value 30.021751
iter  50 value 24.885149
iter  60 value 23.260368
iter  70 value 21.532686
iter  80 value 18.453428
iter  90 value 16.355392
iter 100 value 14.760503
final  value 14.760503 
stopped after 100 iterations
# weights:  54
initial  value 353.495312 
iter  10 value 266.175100
iter  20 value 226.595458
iter  30 value 204.266060
iter  40 value 177.329156
iter  50 value 161.734437
iter  60 value 157.853386
iter  70 value 153.134607
iter  80 value 150.623645
iter  90 value 149.089362
iter 100 value 147.091962
final  value 147.091962 
stopped after 100 iterations
# weights:  136
initial  value 369.540819 
iter  10 value 250.104178
iter  20 value 165.409424
iter  30 value 116.352563
iter  40 value 89.816418
iter  50 value 69.335820
iter  60 value 58.413225
iter  70 value 49.506862
iter  80 value 45.658212
iter  90 value 43.570328
iter 100 value 42.069415
final  value 42.069415 
stopped after 100 iterations
# weights:  218
initial  value 413.951136 
iter  10 value 200.837509
iter  20 value 107.441462
iter  30 value 62.863231
iter  40 value 37.920226
iter  50 value 23.801340
iter  60 value 18.974729
iter  70 value 16.967879
iter  80 value 14.894140
iter  90 value 14.348272
iter 100 value 13.688288
final  value 13.688288 
stopped after 100 iterations
# weights:  54
initial  value 364.377866 
iter  10 value 266.815874
iter  20 value 243.527576
iter  30 value 237.235405
iter  40 value 235.828113
iter  50 value 235.768685
final  value 235.768594 
converged
# weights:  136
initial  value 350.310395 
iter  10 value 246.956068
iter  20 value 180.337240
iter  30 value 159.381821
iter  40 value 152.801969
iter  50 value 147.431795
iter  60 value 146.423746
iter  70 value 146.407587
iter  80 value 146.406898
final  value 146.406892 
converged
# weights:  218
initial  value 393.548408 
iter  10 value 250.470004
iter  20 value 181.308253
iter  30 value 143.478997
iter  40 value 130.106176
iter  50 value 121.216660
iter  60 value 118.979337
iter  70 value 118.739942
iter  80 value 118.679525
iter  90 value 118.673527
iter 100 value 118.672002
final  value 118.672002 
stopped after 100 iterations
# weights:  54
initial  value 342.439253 
iter  10 value 240.810759
iter  20 value 214.741601
iter  30 value 199.313642
iter  40 value 190.669332
iter  50 value 184.023508
iter  60 value 182.643951
iter  70 value 179.015420
iter  80 value 175.116142
iter  90 value 163.216545
iter 100 value 155.031907
final  value 155.031907 
stopped after 100 iterations
# weights:  136
initial  value 344.502143 
iter  10 value 216.837463
iter  20 value 130.757263
iter  30 value 89.198967
iter  40 value 76.203075
iter  50 value 63.891913
iter  60 value 59.710570
iter  70 value 57.487687
iter  80 value 54.721103
iter  90 value 50.461505
iter 100 value 49.580102
final  value 49.580102 
stopped after 100 iterations
# weights:  218
initial  value 361.305421 
iter  10 value 211.164626
iter  20 value 75.755760
iter  30 value 28.976871
iter  40 value 16.915610
iter  50 value 12.728486
iter  60 value 10.599937
iter  70 value 8.679552
iter  80 value 7.761057
iter  90 value 7.208262
iter 100 value 6.602483
final  value 6.602483 
stopped after 100 iterations
# weights:  54
initial  value 353.813307 
iter  10 value 258.130608
iter  20 value 245.069850
iter  30 value 238.488131
iter  40 value 236.264474
iter  50 value 234.392869
iter  60 value 230.119483
iter  70 value 225.596407
iter  80 value 219.926299
iter  90 value 218.649093
iter 100 value 218.254828
final  value 218.254828 
stopped after 100 iterations
# weights:  136
initial  value 337.049121 
iter  10 value 194.785203
iter  20 value 131.335708
iter  30 value 100.458134
iter  40 value 91.668384
iter  50 value 77.877765
iter  60 value 70.033784
iter  70 value 67.205940
iter  80 value 65.432442
iter  90 value 64.749250
iter 100 value 64.414010
final  value 64.414010 
stopped after 100 iterations
# weights:  218
initial  value 352.784934 
iter  10 value 196.911384
iter  20 value 117.425119
iter  30 value 81.046657
iter  40 value 54.068403
iter  50 value 38.474900
iter  60 value 34.067729
iter  70 value 31.222303
iter  80 value 30.481333
iter  90 value 30.079590
iter 100 value 29.968830
final  value 29.968830 
stopped after 100 iterations
# weights:  54
initial  value 362.041697 
iter  10 value 274.759767
iter  20 value 243.414877
iter  30 value 241.278191
iter  40 value 241.196737
final  value 241.196702 
converged
# weights:  136
initial  value 342.673998 
iter  10 value 227.346079
iter  20 value 170.864564
iter  30 value 158.335921
iter  40 value 155.983561
iter  50 value 154.939393
iter  60 value 154.894279
iter  70 value 154.892764
final  value 154.892755 
converged
# weights:  218
initial  value 375.413110 
iter  10 value 231.685443
iter  20 value 165.830899
iter  30 value 150.746566
iter  40 value 138.760541
iter  50 value 125.368799
iter  60 value 122.871024
iter  70 value 120.405930
iter  80 value 118.124074
iter  90 value 116.121665
iter 100 value 115.746321
final  value 115.746321 
stopped after 100 iterations
# weights:  54
initial  value 334.298849 
iter  10 value 267.648013
iter  20 value 216.596753
iter  30 value 190.126100
iter  40 value 169.241400
iter  50 value 156.081615
iter  60 value 151.851363
iter  70 value 139.891753
iter  80 value 137.007281
iter  90 value 132.036113
iter 100 value 131.119286
final  value 131.119286 
stopped after 100 iterations
# weights:  136
initial  value 354.915425 
iter  10 value 226.333822
iter  20 value 158.795667
iter  30 value 133.070521
iter  40 value 110.231889
iter  50 value 89.732556
iter  60 value 81.692444
iter  70 value 75.891710
iter  80 value 71.897530
iter  90 value 69.287961
iter 100 value 67.159029
final  value 67.159029 
stopped after 100 iterations
# weights:  218
initial  value 402.574490 
iter  10 value 225.449538
iter  20 value 125.678580
iter  30 value 63.454002
iter  40 value 39.009359
iter  50 value 35.207665
iter  60 value 34.178509
iter  70 value 33.439945
iter  80 value 32.736543
iter  90 value 31.478149
iter 100 value 26.344772
final  value 26.344772 
stopped after 100 iterations
# weights:  54
initial  value 351.774169 
iter  10 value 304.663209
iter  20 value 240.241936
iter  30 value 213.052432
iter  40 value 200.301896
iter  50 value 195.550007
iter  60 value 195.062263
iter  70 value 194.761870
iter  80 value 194.442547
iter  90 value 194.294996
iter 100 value 194.173511
final  value 194.173511 
stopped after 100 iterations
# weights:  136
initial  value 348.059476 
iter  10 value 212.421083
iter  20 value 131.017051
iter  30 value 97.204736
iter  40 value 81.666361
iter  50 value 71.942686
iter  60 value 67.830867
iter  70 value 65.212009
iter  80 value 62.931537
iter  90 value 59.767672
iter 100 value 56.908968
final  value 56.908968 
stopped after 100 iterations
# weights:  218
initial  value 392.410438 
iter  10 value 187.430829
iter  20 value 96.013003
iter  30 value 64.053665
iter  40 value 39.778807
iter  50 value 24.775579
iter  60 value 18.163908
iter  70 value 16.015093
iter  80 value 15.210727
iter  90 value 15.097083
iter 100 value 15.086673
final  value 15.086673 
stopped after 100 iterations
# weights:  54
initial  value 354.724707 
iter  10 value 287.997529
iter  20 value 254.146293
iter  30 value 239.501679
iter  40 value 237.558893
iter  50 value 236.732284
iter  60 value 236.725712
iter  60 value 236.725711
iter  60 value 236.725711
final  value 236.725711 
converged
# weights:  136
initial  value 359.539086 
iter  10 value 238.350588
iter  20 value 170.831528
iter  30 value 156.955234
iter  40 value 155.388033
iter  50 value 154.780055
iter  60 value 154.501169
iter  70 value 154.430536
iter  80 value 154.430296
iter  80 value 154.430295
iter  80 value 154.430295
final  value 154.430295 
converged
# weights:  218
initial  value 357.797260 
iter  10 value 221.791893
iter  20 value 179.058929
iter  30 value 151.167489
iter  40 value 140.441155
iter  50 value 130.148463
iter  60 value 127.157401
iter  70 value 124.665360
iter  80 value 122.188933
iter  90 value 120.747672
iter 100 value 120.421806
final  value 120.421806 
stopped after 100 iterations
# weights:  54
initial  value 346.272525 
iter  10 value 258.059969
iter  20 value 215.605894
iter  30 value 192.651080
iter  40 value 184.425581
iter  50 value 176.680216
iter  60 value 166.257268
iter  70 value 162.551866
iter  80 value 160.512608
iter  90 value 156.717387
iter 100 value 151.226668
final  value 151.226668 
stopped after 100 iterations
# weights:  136
initial  value 351.188852 
iter  10 value 233.780367
iter  20 value 169.853461
iter  30 value 135.291343
iter  40 value 122.340449
iter  50 value 117.958377
iter  60 value 115.724435
iter  70 value 114.798693
iter  80 value 113.839090
iter  90 value 112.708332
iter 100 value 111.521571
final  value 111.521571 
stopped after 100 iterations
# weights:  218
initial  value 357.406238 
iter  10 value 197.483168
iter  20 value 94.780467
iter  30 value 51.971672
iter  40 value 31.894819
iter  50 value 24.282965
iter  60 value 22.460617
iter  70 value 19.565605
iter  80 value 16.329330
iter  90 value 10.929384
iter 100 value 8.941709
final  value 8.941709 
stopped after 100 iterations
# weights:  54
initial  value 336.252374 
iter  10 value 267.048044
iter  20 value 241.394479
iter  30 value 232.516182
iter  40 value 227.896790
iter  50 value 227.088875
iter  60 value 225.829291
iter  70 value 224.718444
iter  80 value 224.423279
iter  90 value 224.272467
iter 100 value 224.126824
final  value 224.126824 
stopped after 100 iterations
# weights:  136
initial  value 377.325243 
iter  10 value 211.788644
iter  20 value 127.266043
iter  30 value 97.502360
iter  40 value 84.124351
iter  50 value 71.030885
iter  60 value 64.641469
iter  70 value 63.688441
iter  80 value 61.176219
iter  90 value 60.346745
iter 100 value 59.518575
final  value 59.518575 
stopped after 100 iterations
# weights:  218
initial  value 385.265851 
iter  10 value 236.177432
iter  20 value 102.861451
iter  30 value 39.622978
iter  40 value 12.464348
iter  50 value 4.900921
iter  60 value 4.196989
iter  70 value 4.169767
iter  80 value 4.163565
iter  90 value 4.159904
iter 100 value 4.159297
final  value 4.159297 
stopped after 100 iterations
# weights:  54
initial  value 359.633536 
iter  10 value 311.800942
iter  20 value 254.435466
iter  30 value 238.569520
iter  40 value 236.351482
iter  50 value 236.143273
iter  60 value 236.123350
final  value 236.123306 
converged
# weights:  136
initial  value 365.345152 
iter  10 value 239.691429
iter  20 value 165.615217
iter  30 value 153.639232
iter  40 value 150.518223
iter  50 value 146.067797
iter  60 value 145.790203
final  value 145.788670 
converged
# weights:  218
initial  value 383.048195 
iter  10 value 212.203973
iter  20 value 146.037092
iter  30 value 133.598058
iter  40 value 128.357351
iter  50 value 126.396587
iter  60 value 124.021205
iter  70 value 121.671551
iter  80 value 121.277252
iter  90 value 120.879872
iter 100 value 120.781809
final  value 120.781809 
stopped after 100 iterations
# weights:  54
initial  value 364.660354 
iter  10 value 258.084894
iter  20 value 234.262908
iter  30 value 216.402884
iter  40 value 211.523376
iter  50 value 209.731906
iter  60 value 208.083571
iter  70 value 202.120221
iter  80 value 196.720676
iter  90 value 193.072341
iter 100 value 184.049676
final  value 184.049676 
stopped after 100 iterations
# weights:  136
initial  value 364.760669 
iter  10 value 206.096044
iter  20 value 135.337645
iter  30 value 92.972052
iter  40 value 70.568418
iter  50 value 54.990481
iter  60 value 49.420948
iter  70 value 46.344860
iter  80 value 44.616966
iter  90 value 42.995117
iter 100 value 41.164352
final  value 41.164352 
stopped after 100 iterations
# weights:  218
initial  value 387.524635 
iter  10 value 233.512765
iter  20 value 130.116102
iter  30 value 68.387348
iter  40 value 48.152335
iter  50 value 37.750475
iter  60 value 27.573377
iter  70 value 19.422958
iter  80 value 15.679865
iter  90 value 13.986456
iter 100 value 13.063084
final  value 13.063084 
stopped after 100 iterations
# weights:  54
initial  value 376.488586 
iter  10 value 250.654834
iter  20 value 209.395371
iter  30 value 187.004793
iter  40 value 172.043001
iter  50 value 166.354211
iter  60 value 164.877564
iter  70 value 164.297970
iter  80 value 162.800271
iter  90 value 162.550859
iter 100 value 162.423874
final  value 162.423874 
stopped after 100 iterations
# weights:  136
initial  value 369.731331 
iter  10 value 264.698891
iter  20 value 125.946977
iter  30 value 96.207153
iter  40 value 79.122930
iter  50 value 70.532343
iter  60 value 64.150486
iter  70 value 59.778772
iter  80 value 57.148468
iter  90 value 56.630882
iter 100 value 55.963278
final  value 55.963278 
stopped after 100 iterations
# weights:  218
initial  value 394.381461 
iter  10 value 262.439696
iter  20 value 158.097823
iter  30 value 116.784049
iter  40 value 90.775147
iter  50 value 63.661619
iter  60 value 52.311797
iter  70 value 48.066620
iter  80 value 43.581563
iter  90 value 40.902612
iter 100 value 39.783683
final  value 39.783683 
stopped after 100 iterations
# weights:  54
initial  value 377.512264 
iter  10 value 298.023744
iter  20 value 261.607362
iter  30 value 247.960815
iter  40 value 247.213145
iter  50 value 247.186744
final  value 247.186629 
converged
# weights:  136
initial  value 400.912241 
iter  10 value 277.588817
iter  20 value 195.079436
iter  30 value 176.130936
iter  40 value 168.297753
iter  50 value 162.539598
iter  60 value 153.972176
iter  70 value 153.333836
iter  80 value 153.320739
final  value 153.320662 
converged
# weights:  218
initial  value 353.629973 
iter  10 value 216.487441
iter  20 value 166.544901
iter  30 value 145.465014
iter  40 value 140.573468
iter  50 value 134.239532
iter  60 value 130.558578
iter  70 value 128.671432
iter  80 value 126.210569
iter  90 value 124.823081
iter 100 value 124.652372
final  value 124.652372 
stopped after 100 iterations
# weights:  54
initial  value 359.571579 
iter  10 value 285.324232
iter  20 value 226.439614
iter  30 value 201.467195
iter  40 value 187.861435
iter  50 value 178.461930
iter  60 value 168.612818
iter  70 value 158.473194
iter  80 value 152.597040
iter  90 value 150.446501
iter 100 value 148.805156
final  value 148.805156 
stopped after 100 iterations
# weights:  136
initial  value 361.687273 
iter  10 value 199.064497
iter  20 value 144.257290
iter  30 value 104.646517
iter  40 value 73.618803
iter  50 value 59.907368
iter  60 value 54.333704
iter  70 value 50.699544
iter  80 value 49.499403
iter  90 value 48.571826
iter 100 value 47.296426
final  value 47.296426 
stopped after 100 iterations
# weights:  218
initial  value 354.011175 
iter  10 value 201.979728
iter  20 value 85.879984
iter  30 value 33.776842
iter  40 value 17.644340
iter  50 value 12.054319
iter  60 value 9.100417
iter  70 value 6.475145
iter  80 value 5.713809
iter  90 value 5.089691
iter 100 value 4.716540
final  value 4.716540 
stopped after 100 iterations
# weights:  218
initial  value 452.708012 
iter  10 value 317.019436
iter  20 value 213.775765
iter  30 value 181.185238
iter  40 value 163.169790
iter  50 value 148.913220
iter  60 value 142.665565
iter  70 value 139.795054
iter  80 value 138.621954
iter  90 value 138.264196
iter 100 value 138.001658
final  value 138.001658 
stopped after 100 iterations
fittednnet <- predict(nnet, testSet_final)
cf_nnet <- confusionMatrix(reference = testSet_final$final_species_name,
                data = fittednnet,
                mode = "everything") 

# SVM
set.seed(42) 
svm_linear <- train(final_species_name ~.,
              data = trainingSet_final,
              method = "svmLinear",
              metric = "Accuracy",
              trControl = ctrl) 
fittedsvm <- predict(svm_linear, testSet_final)
cf_svm <- confusionMatrix(reference = testSet_final$final_species_name,
                data = fittedsvm,
                mode = "everything")

# Random forest
set.seed(42) 
rf <- train(final_species_name ~.,
              data = trainingSet_final,
              method = "rf",
              metric = "Accuracy",
              trControl = ctrl) 
fittedrf <- predict(rf, testSet_final)
cf_rf <- confusionMatrix(reference = testSet_final$final_species_name,
                data = fittedrf,
                mode = "everything")

# Random forest
set.seed(42) 
rf <- train(final_species_name ~.,
              data = trainingSet_final,
              method = "rf",
              metric = "Accuracy",
              trControl = ctrl) 
fittedrf <- predict(rf, testSet_final)
cf_rf <- confusionMatrix(reference = testSet_final$final_species_name,
                data = fittedrf,
                mode = "everything")

# Logit
set.seed(42) 
logit <- train(final_species_name ~.,
              data = trainingSet_final,
              method = "LogitBoost",
              metric = "Accuracy",
              trControl = ctrl) 
fittedlogit <- predict(rf, testSet_final)
cf_logit <- confusionMatrix(reference = testSet_final$final_species_name,
                data = fittedlogit,
                mode = "everything")

# KNN
set.seed(42) 
knn_train <- train(final_species_name ~.,
              data = trainingSet_final,
              method = "knn",
              metric = "Accuracy",
              trControl = ctrl) 
fittedknn <- predict(knn_train, testSet_final)
cf_knn <- confusionMatrix(reference = testSet_final$final_species_name,
                data = fittedknn,
                mode = "everything") 

Comparing the performance of different ML algorithms

resamps <- resamples(list(NNET = nnet,
                          RPART = rpart,
                          RF = rf,
                          SVMLINEAR = svm_linear,
                          LOGITBOOST = logit,
                          KNN = knn_train))
resamps

Call:
resamples.default(x = list(NNET = nnet, RPART = rpart, RF = rf, SVMLINEAR
 = svm_linear, LOGITBOOST = logit, KNN = knn_train))

Models: NNET, RPART, RF, SVMLINEAR, LOGITBOOST, KNN 
Number of resamples: 25 
Performance metrics: Accuracy, Kappa 
Time estimates for: everything, final model fit 
# Boxplot comparing different algorithms
theme1 <- trellis.par.get()
theme1$plot.symbol$col = rgb(.2, .2, .2, .4) 
theme1$plot.symbol$pch = 16 
theme1$plot.line$col = rgb(1, 0, 0, .7) 
theme1$plot.line$lwd <- 2 
trellis.par.set(theme1) 
bwplot(resamps, layout = c(2, 1)) 

resamps2 <- resamples(list(RF = rf,
                          LOGITBOOST = logit))
resamps2

Call:
resamples.default(x = list(RF = rf, LOGITBOOST = logit))

Models: RF, LOGITBOOST 
Number of resamples: 25 
Performance metrics: Accuracy, Kappa 
Time estimates for: everything, final model fit 
# xyplot plots to compare models 
xyplot(resamps2, models=c("RF", "LOGITBOOST"))

ROC curves

# Probabilities prediction
y_scores_logit <- predict(logit, type = 'prob')
pred <-"pred"
make.names(paste(names(y_scores_logit), pred))
 [1] "E_bibronii.pred"      "E_bilineatus.pred"    "E_boulengeri.pred"   
 [4] "E_brasiliensis.pred"  "E_capetinga.pred"     "E_catenatus.pred"    
 [7] "E_catenatus2.pred"    "E_erythroceneus.pred" "E_iheringii.pred"    
[10] "E_leechii.pred"       "E_perditus.pred"      "E_perditus2.pred"    
[13] "E_pictus.pred"       
colnames(y_scores_logit)[c(1:13)] <- make.names(paste(names(y_scores_logit)[c(1:13)], pred))

# One hot encode the labels in order to plot them
y_onehot <- dummy_cols(trainingSet_final$final_species_name)
categories <- unique(trainingSet_final$trainingSet_final)
categories
NULL
colnames(y_onehot) <- c("drop","E_boulengeri", "E_brasiliensis",
                        "E_capetinga", "E_perditus2", "E_bibronii",
                        "E_bilineatus", "E_catenatus2", "E_erythroceneus",
                        "E_pictus", "E_iheringii","E_perditus",
                        "E_leechii", "E_catenatus")
y_onehot <- subset(y_onehot, select = -c(drop))

# Getting scores for each species
scores_logit_binded <- cbind(y_scores_logit, y_onehot)
str(scores_logit_binded)
'data.frame':   167 obs. of  26 variables:
 $ E_bibronii.pred     : num  0.944 0.914 0.873 0.868 0.905 ...
 $ E_bilineatus.pred   : num  0.008646 0.000154 0.001088 0.001081 0.008289 ...
 $ E_boulengeri.pred   : num  0.001177 0.000154 0.001088 0.001081 0.008289 ...
 $ E_brasiliensis.pred : num  0.008646 0.008366 0.056632 0.007945 0.000153 ...
 $ E_capetinga.pred    : num  0.001177 0.000154 0.001088 0.000146 0.000153 ...
 $ E_catenatus.pred    : num  8.65e-03 8.37e-03 1.47e-04 1.46e-04 2.07e-05 ...
 $ E_catenatus2.pred   : num  0.000159 0.000154 0.000147 0.001081 0.058733 ...
 $ E_erythroceneus.pred: num  0.00865 0.05928 0.05663 0.0563 0.00829 ...
 $ E_iheringii.pred    : num  0.00865 0.00114 0.00109 0.0563 0.00113 ...
 $ E_leechii.pred      : num  2.16e-05 2.09e-05 1.99e-05 1.98e-05 2.07e-05 ...
 $ E_perditus.pred     : num  2.16e-05 2.09e-05 1.99e-05 1.98e-05 1.13e-03 ...
 $ E_perditus2.pred    : num  0.00865 0.00837 0.00109 0.00794 0.00829 ...
 $ E_pictus.pred       : num  1.18e-03 2.09e-05 7.99e-03 1.46e-04 1.53e-04 ...
 $ E_boulengeri        : int  1 1 1 1 1 1 1 1 1 1 ...
 $ E_brasiliensis      : int  0 0 0 0 0 0 0 0 0 0 ...
 $ E_capetinga         : int  0 0 0 0 0 0 0 0 0 0 ...
 $ E_perditus2         : int  0 0 0 0 0 0 0 0 0 0 ...
 $ E_bibronii          : int  0 0 0 0 0 0 0 0 0 0 ...
 $ E_bilineatus        : int  0 0 0 0 0 0 0 0 0 0 ...
 $ E_catenatus2        : int  0 0 0 0 0 0 0 0 0 0 ...
 $ E_erythroceneus     : int  0 0 0 0 0 0 0 0 0 0 ...
 $ E_pictus            : int  0 0 0 0 0 0 0 0 0 0 ...
 $ E_iheringii         : int  0 0 0 0 0 0 0 0 0 0 ...
 $ E_perditus          : int  0 0 0 0 0 0 0 0 0 0 ...
 $ E_leechii           : int  0 0 0 0 0 0 0 0 0 0 ...
 $ E_catenatus         : int  0 0 0 0 0 0 0 0 0 0 ...
scores_logit_binded$E_boulengeri <- as.factor(scores_logit_binded$E_boulengeri)
roc_boulengeri <- roc_curve(data = scores_logit_binded, E_boulengeri, E_boulengeri.pred)
roc_boulengeri
# A tibble: 166 x 3
     .threshold specificity sensitivity
          <dbl>       <dbl>       <dbl>
 1 -Inf                   0       1    
 2    0.0000164           0       1    
 3    0.0000164           0       0.993
 4    0.0000352           0       0.987
 5    0.0000594           0       0.98 
 6    0.0000726           0       0.973
 7    0.0000894           0       0.967
 8    0.0000922           0       0.96 
 9    0.000100            0       0.953
10    0.000102            0       0.947
# i 156 more rows
roc_boulengeri$specificity <- 1 - roc_boulengeri$specificity
colnames(roc_boulengeri) <- c('threshold', 'tpr', 'fpr')
auc_boulengeri <- roc_auc(data =  scores_logit_binded, E_boulengeri, E_boulengeri.pred)
auc_boulengeri <- auc_boulengeri$.estimate
boulengeri <- paste('boulengeri (AUC=',toString(round(1-auc_boulengeri,2)),')',sep = '')

scores_logit_binded$E_brasiliensis <- as.factor(scores_logit_binded$E_brasiliensis)
roc_brasiliensis <- roc_curve(data = scores_logit_binded, E_brasiliensis, E_brasiliensis.pred)
roc_brasiliensis$specificity <- 1 - roc_brasiliensis$specificity
colnames(roc_brasiliensis) <- c('threshold', 'tpr', 'fpr')
auc_brasiliensis <- roc_auc(data = scores_logit_binded, E_brasiliensis, E_brasiliensis.pred)
auc_brasiliensis <- auc_brasiliensis$.estimate
brasiliensis <- paste('brasiliensis (AUC=',toString(round(1-auc_brasiliensis,2)),')', sep = '')

scores_logit_binded$E_capetinga <- as.factor(scores_logit_binded$E_capetinga)
roc_capetinga <- roc_curve(data = scores_logit_binded, E_capetinga, E_capetinga.pred)
roc_capetinga$specificity <- 1 - roc_capetinga$specificity
colnames(roc_capetinga) <- c('threshold', 'tpr', 'fpr')
auc_capetinga <- roc_auc(data = scores_logit_binded, E_capetinga, E_capetinga.pred)
auc_capetinga <- auc_capetinga$.estimate
capetinga <- paste('capetinga (AUC=',toString(round(1-auc_capetinga,2)),')',sep = '')

scores_logit_binded$E_perditus2 <- as.factor(scores_logit_binded$E_perditus2)
roc_perditus2 <- roc_curve(data = scores_logit_binded, E_perditus2, E_perditus2.pred)
roc_perditus2$specificity <- 1 - roc_perditus2$specificity
colnames(roc_perditus2) <- c('threshold', 'tpr', 'fpr')
auc_perditus2 <- roc_auc(data = scores_logit_binded, E_perditus2, E_perditus2.pred)
auc_perditus2 <- auc_perditus2$.estimate
perditus2 <- paste('perditus2 (AUC=',toString(round(1-auc_perditus2,2)),')',sep = '')

scores_logit_binded$E_bibronii <- as.factor(scores_logit_binded$E_bibronii)
roc_bibronii <- roc_curve(data = scores_logit_binded, E_bibronii, E_bibronii.pred)
roc_bibronii$specificity <- 1 - roc_bibronii$specificity
colnames(roc_bibronii) <- c('threshold', 'tpr', 'fpr')
auc_bibronii <- roc_auc(data = scores_logit_binded, E_bibronii, E_bibronii.pred)
auc_bibronii <- auc_bibronii$.estimate
bibronii <- paste('bibronii (AUC=',toString(round(1-auc_bibronii, 2)),')',sep = '')

scores_logit_binded$E_bilineatus <- as.factor(scores_logit_binded$E_bilineatus)
roc_bilineatus <- roc_curve(data = scores_logit_binded, E_bilineatus, E_bilineatus.pred)
roc_bilineatus$specificity <- 1 - roc_bilineatus$specificity
colnames(roc_bilineatus) <- c('threshold', 'tpr', 'fpr')
auc_bilineatus <- roc_auc(data = scores_logit_binded, E_bilineatus, E_bilineatus.pred)
auc_bilineatus <- auc_bilineatus$.estimate
bilineatus <- paste('bilineatus (AUC=',toString(round(1-auc_bilineatus, 2)),')',sep = '')

scores_logit_binded$E_catenatus2 <- as.factor(scores_logit_binded$E_catenatus2)
roc_catenatus2 <- roc_curve(data = scores_logit_binded, E_catenatus2, E_catenatus2.pred)
roc_catenatus2$specificity <- 1 - roc_catenatus2$specificity
colnames(roc_catenatus2) <- c('threshold', 'tpr', 'fpr')
auc_catenatus2 <- roc_auc(data = scores_logit_binded, E_catenatus2, E_catenatus2.pred)
auc_catenatus2 <- auc_catenatus2$.estimate
catenatus2 <- paste('catenatus2 (AUC=',toString(round(1-auc_catenatus2, 2)),')',sep = '')

scores_logit_binded$E_erythroceneus <- as.factor(scores_logit_binded$E_erythroceneus)
roc_erythroceneus <- roc_curve(data = scores_logit_binded, E_erythroceneus, E_erythroceneus.pred)
roc_erythroceneus$specificity <- 1 - roc_erythroceneus$specificity
colnames(roc_erythroceneus) <- c('threshold', 'tpr', 'fpr')
auc_erythroceneus <- roc_auc(data = scores_logit_binded, E_erythroceneus, E_erythroceneus.pred)
auc_erythroceneus <- auc_erythroceneus$.estimate
erythroceneus <- paste('erythroceneus (AUC=',toString(round(1-auc_erythroceneus, 2)),')',sep = '')

scores_logit_binded$E_pictus <- as.factor(scores_logit_binded$E_pictus)
roc_pictus <- roc_curve(data = scores_logit_binded, E_pictus, E_pictus.pred)
roc_pictus$specificity <- 1 - roc_pictus$specificity
colnames(roc_pictus) <- c('threshold', 'tpr', 'fpr')
auc_pictus <- roc_auc(data = scores_logit_binded, E_pictus, E_pictus.pred)
auc_pictus <- auc_pictus$.estimate
pictus <- paste('pictus (AUC=',toString(round(1-auc_pictus, 2)),')',sep = '')

scores_logit_binded$E_iheringii <- as.factor(scores_logit_binded$E_iheringii)
roc_iheringii <- roc_curve(data = scores_logit_binded, E_iheringii, E_iheringii.pred)
roc_iheringii$specificity <- 1 - roc_iheringii$specificity
colnames(roc_iheringii) <- c('threshold', 'tpr', 'fpr')
auc_iheringii  <- roc_auc(data = scores_logit_binded, E_iheringii, E_iheringii.pred)
auc_iheringii <- auc_iheringii$.estimate
iheringii <- paste('iheringii (AUC=',toString(round(1-auc_iheringii, 2)),')',sep = '')

scores_logit_binded$E_perditus <- as.factor(scores_logit_binded$E_perditus)
roc_perditus <- roc_curve(data = scores_logit_binded, E_perditus, E_perditus.pred)
roc_perditus$specificity <- 1 - roc_perditus$specificity
colnames(roc_perditus) <- c('threshold', 'tpr', 'fpr')
auc_perditus  <- roc_auc(data = scores_logit_binded, E_perditus, E_perditus.pred)
auc_perditus <- auc_perditus$.estimate
perditus <- paste('perditus (AUC=',toString(round(1-auc_perditus, 2)),')',sep = '')

scores_logit_binded$E_leechii <- as.factor(scores_logit_binded$E_leechii)
roc_leechii  <- roc_curve(data = scores_logit_binded, E_leechii, E_leechii.pred)
roc_leechii$specificity <- 1 - roc_leechii$specificity
colnames(roc_leechii) <- c('threshold', 'tpr', 'fpr')
auc_leechii  <- roc_auc(data = scores_logit_binded, E_leechii, E_leechii.pred)
auc_leechii <- auc_leechii$.estimate
leechii <- paste('leechii (AUC=',toString(round(1-auc_leechii, 2)),')',sep = '')

scores_logit_binded$E_catenatus <- as.factor(scores_logit_binded$E_catenatus)
roc_catenatus  <- roc_curve(data = scores_logit_binded, E_catenatus, E_catenatus.pred)
roc_catenatus$specificity <- 1 - roc_catenatus$specificity
colnames(roc_catenatus) <- c('threshold', 'tpr', 'fpr')
auc_catenatus <- roc_auc(data = scores_logit_binded, E_catenatus, E_catenatus.pred)
auc_catenatus <- auc_catenatus$.estimate
catenatus <- paste('catenatus (AUC=',toString(round(1-auc_catenatus, 2)),')',sep = '')

# Create an empty figure, and iteratively add a line for each class
fig <- plot_ly()%>%
  add_segments(x = 0, xend = 1, y = 0, yend = 1, line = list(dash = "dash", color = 'black'), showlegend = FALSE) %>%
  add_trace(data = roc_bibronii,x = ~fpr, y = ~tpr, mode = 'lines', name = bibronii, type = 'scatter')%>%
  add_trace(data = roc_bilineatus,x = ~fpr, y = ~tpr, mode = 'lines', name = bilineatus, type = 'scatter')%>%
  add_trace(data = roc_boulengeri,x = ~fpr, y = ~tpr, mode = 'lines', name = boulengeri, type = 'scatter')%>%
  add_trace(data = roc_brasiliensis,x = ~fpr, y = ~tpr, mode = 'lines', name = brasiliensis, type = 'scatter')%>%
  add_trace(data = roc_capetinga,x = ~fpr, y = ~tpr, mode = 'lines', name = capetinga, type = 'scatter')%>%
  add_trace(data = roc_catenatus,x = ~fpr, y = ~tpr, mode = 'lines', name = catenatus, type = 'scatter')%>%
  add_trace(data = roc_catenatus2,x = ~fpr, y = ~tpr, mode = 'lines', name = catenatus2, type = 'scatter')%>%
  add_trace(data = roc_erythroceneus,x = ~fpr, y = ~tpr, mode = 'lines', name = erythroceneus, type = 'scatter')%>%
  add_trace(data = roc_iheringii,x = ~fpr, y = ~tpr, mode = 'lines', name = iheringii, type = 'scatter')%>%
  add_trace(data = roc_leechii,x = ~fpr, y = ~tpr, mode = 'lines', name = leechii, type = 'scatter')%>%
  add_trace(data = roc_perditus,x = ~fpr, y = ~tpr, mode = 'lines', name = perditus, type = 'scatter')%>%
  add_trace(data = roc_perditus2,x = ~fpr, y = ~tpr, mode = 'lines', name = perditus2, type = 'scatter')%>%
  add_trace(data = roc_pictus,x = ~fpr, y = ~tpr, mode = 'lines', name = pictus, type = 'scatter')%>%
  layout(xaxis = list(
    title = "False Positive Rate"
  ), yaxis = list(
    title = "True Positive Rate"
  ),legend = list(x = 100, y = 0.5))
fig