{"metadata":{"kernelspec":{"name":"ir","display_name":"R","language":"R"},"language_info":{"name":"R","codemirror_mode":"r","pygments_lexer":"r","mimetype":"text/x-r-source","file_extension":".r","version":"3.6.3"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"library(tidyverse)\nlibrary(keras)\nlibrary(magrittr)\n#library(onehot)\nlibrary(splitstackshape)\nlibrary(caret)\nlibrary(randomForest)\nlibrary(yardstick)\nlibrary(pROC)\n\ntarget_size = c(256, 256)\n#factor = .4\n#reduceFrom = 2\n\nimage_path <- '../input/plant-pathology-2021-fgvc8/train_images'\nimage_path512 <- '../input/train-images512'\n#image_path256 <- '../input/image_train256b'\n\n\n\nbase <- read_csv(\"../input/plant-pathology-2021-fgvc8/train.csv\") %>% sample_n(1000)\n\nbase <- base %>% mutate(complex = ifelse(str_detect(labels, \"complex\"), 1, 0),\n                        healthy = ifelse(str_detect(labels, \"healthy\"), 1, 0),\n                        rust = ifelse(str_detect(labels, \"rust\"), 1, 0),\n                        scab = ifelse(str_detect(labels, \"scab\"), 1, 0),\n                        frog_eye_leaf_spot = ifelse(str_detect(labels, \"frog_eye_leaf_spot\"), 1, 0),\n                        powdery_mildew = ifelse(str_detect(labels, \"powdery_mildew\"), 1, 0))\n\n\nhead(base)\n\n### testar com datagen e alterar parametros, mexer no datagen e batchsize do generator do submission","metadata":{"_uuid":"051d70d956493feee0c6d64651c6a088724dca2a","_execution_state":"idle","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"### stratified k fold pra separar train e test, visto que ha muita diferenca na proporcao dos labels\n\n#prop.table(table(base$labels))\n\n#d <- rownames_to_column(base, var = \"id\") %>% mutate_at(vars(id), as.integer)\n#train <- d %>% stratified(., group = \"labels\", size = 0.80)\n#dim(train)\n#train\n\n#prop.table(table(train$labels))\n\n#test <- d[-train$id, ]\n#dim(test)\n#prop.table(table(test$labels)) \n\n#head(train)\n#head(test)\n\nbase <- base %>% mutate(flag = sample(0:1, n(), prob = c(.2, .8), replace = TRUE))\ntest <- base %>% filter(flag == 0) %>% select(-flag)\ntrain <- base %>% filter(flag == 1) %>% select(-flag)\n\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"batch_size = 32\n\ntrain_data_gen = image_data_generator(\n  rescale = 1/255,\n    validation_split = 0.2\n)\n\nvalid_data_gen <- image_data_generator(\n  rescale = 1/255,\n  validation_split = 0.2\n)\n\n\ntrain_generator <- flow_images_from_dataframe(dataframe = train, \n                                              directory = image_path, #img_path \n                                              generator = train_data_gen,\n                                              class_mode = \"other\",#class_mode=\"categorical\",\n                                              classes = c('complex', 'healthy', 'rust', 'scab', 'frog_eye_leaf_spot', 'powdery_mildew'),\n                                              x_col = \"image\",\n                                              y_col =  c('complex', 'healthy', 'rust', 'scab', 'frog_eye_leaf_spot', 'powdery_mildew'),\n                                              target_size = target_size,\n                                              batch_size = batch_size,\n                                              #shuffle = TRUE,\n                                              drop_duplicates = FALSE#,\n                                              #interpolation = \"nearest\"\n                                             )\n\nvalidation_generator <- flow_images_from_dataframe(dataframe = test, \n                                              directory = image_path,\n                                              generator = train_data_gen,     \n                                              class_mode = \"other\",#class_mode=\"categorical\"\n                                              classes = c('complex', 'healthy', 'rust', 'scab', 'frog_eye_leaf_spot', 'powdery_mildew'),\n                                              x_col = \"image\",\n                                              y_col =  c('complex', 'healthy', 'rust', 'scab', 'frog_eye_leaf_spot', 'powdery_mildew'),\n                                              target_size = target_size,\n                                              batch_size = batch_size,\n                                              #shuffle = TRUE,\n                                              drop_duplicates = FALSE#,\n                                              #interpolation = \"nearest\"\n                                                  )","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"modelmeu = keras_model_sequential() #model1 = keras_model()\nmodelmeu %>% \n    layer_conv_2d(32, kernel_size = c(3,3), input_shape = c(256,256,3),activation=\"relu\", name=\"conv_1\") %>% #colocar input_shape pq eh a primeira camada\n    layer_max_pooling_2d(pool_size=c(2, 2), name=\"pool_1\") %>%\n    layer_conv_2d(64, kernel_size = c(3,3), activation=\"relu\", name=\"conv_2\") %>%\n    layer_max_pooling_2d(pool_size=c(2, 2), name=\"pool_2\") %>%\n    #layer_conv_2d(128, kernel_size = c(3,3), activation=\"relu\", name=\"conv_3\") %>%\n    #layer_max_pooling_2d(pool_size=c(2, 2), name=\"pool_3\") %>%\n    layer_flatten()  %>%\n    layer_dense(units = 128, activation = \"relu\", name = \"fc1\") %>%\n    layer_dropout(rate=0.5)%>%\n    layer_dense(units = 6, activation = 'sigmoid',name = \"classif\")\n\n\n#### adicionar uns dropout, talvez melhore o overfit\n\nmodelmeu %>%\n  compile (optimizer = optimizer_adam(lr=0.001),loss = 'binary_crossentropy', \n           metrics = c('accuracy'))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"history <- modelmeu %>% fit_generator(\n    #callbacks = list(callback_early_stopping(patience=3)),\n    train_generator,\n    steps_per_epoch = round(nrow(train)/(batch_size)),\n    epochs = 20,#10\n    validation_data = validation_generator,\n    validation_step = round(nrow(test)/(batch_size)),\n    verbose = 1\n)\n\nplot(history)\n\nhistory\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Metricas","metadata":{}},{"cell_type":"code","source":"head(test)\n\ntest_data_gen <- image_data_generator(\n  rescale = 1/255\n)\n\nsample_submission <- test#read_csv(\"../input/plant-pathology-2021-fgvc8/sample_submission.csv\")\ntest_generator <- flow_images_from_dataframe(dataframe = sample_submission, \n                                              directory = image_path,\n                                              class_mode = NULL,\n                                              x_col = \"image\",\n                                              y_col = NULL,\n                                              target_size = target_size,\n                                              shuffle = FALSE,\n                                              generator = test_data_gen, \n                                              batch_size=32) #testar 1\n\nnum_test_images <- nrow(sample_submission)\n\npred <- modelmeu %>% predict_generator(test_generator, steps = num_test_images)\n\nhead(pred)\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# ### Definir threshold a partir do G mean\n# preddf <- as.data.frame(pred)\n# colnames(preddf) <- c(\"complex_p\", \"healthy_p\",\"rust_p\", \"scab_p\", \"frog_eye_leaf_spot_p\", \"powdery_mildew_p\")\n# \n# roc_complex <- tibble(complex_t = sample_submission$complex,\n#                       complex_est = pred[,1])\n# \n# roc_complex <- roc_curve(data = roc_complex, truth = as.factor(complex_t), estimate = complex_est)\n# roc_complex <- roc_complex %>% mutate(gmean = sqrt(sensitivity*specificity),\n#                                       fscore = (2*sensitivity*specificity)/(sensitivity+specificity)) %>% arrange(-gmean)\n# th_complex <- roc_complex %>% slice(1) %>% pull(\".threshold\")\n# th_complex\n# \n# roc_healthy <- tibble(healthy_t = sample_submission$healthy,\n#                       healthy_est = pred[,1])\n# \n# roc_healthy <- roc_curve(data = roc_healthy, truth = as.factor(healthy_t), estimate = healthy_est)\n# roc_healthy <- roc_healthy %>% mutate(gmean = sqrt(sensitivity*specificity)) %>% arrange(-gmean)\n# th_healthy <- roc_healthy %>% slice(1) %>% pull(\".threshold\")\n# th_healthy\n# \n# roc_rust <- tibble(rust_t = sample_submission$rust,\n#                    rust_est = pred[,1])\n# \n# roc_rust <- roc_curve(data = roc_rust, truth = as.factor(rust_t), estimate = rust_est)\n# roc_rust <- roc_rust %>% mutate(gmean = sqrt(sensitivity*specificity)) %>% arrange(-gmean)\n# th_rust <- roc_rust %>% slice(1) %>% pull(\".threshold\")\n# th_rust\n# \n# roc_scab <- tibble(scab_t = sample_submission$scab,\n#                    scab_est = pred[,1])\n# \n# roc_scab <- roc_curve(data = roc_scab, truth = as.factor(scab_t), estimate = scab_est)\n# roc_scab <- roc_scab %>% mutate(gmean = sqrt(sensitivity*specificity)) %>% arrange(-gmean)\n# th_scab <- roc_scab %>% slice(1) %>% pull(\".threshold\")\n# th_scab\n# \n# roc_frog_eye_leaf_spot <- tibble(frog_eye_leaf_spot_t = sample_submission$frog_eye_leaf_spot,\n#                                  frog_eye_leaf_spot_est = pred[,1])\n# \n# roc_frog_eye_leaf_spot <- roc_curve(data = roc_frog_eye_leaf_spot, truth = as.factor(frog_eye_leaf_spot_t), estimate = frog_eye_leaf_spot_est)\n# roc_frog_eye_leaf_spot <- roc_frog_eye_leaf_spot %>% mutate(gmean = sqrt(sensitivity*specificity)) %>% arrange(-gmean)\n# th_frog_eye_leaf_spot <- roc_frog_eye_leaf_spot %>% slice(1) %>% pull(\".threshold\")\n# th_frog_eye_leaf_spot\n# \n# roc_powdery_mildew <- tibble(powdery_mildew_t = sample_submission$powdery_mildew,\n#                              powdery_mildew_est = pred[,1])\n# \n# roc_powdery_mildew <- roc_curve(data = roc_powdery_mildew, truth = as.factor(powdery_mildew_t), estimate = powdery_mildew_est)\n# roc_powdery_mildew <- roc_powdery_mildew %>% mutate(gmean = sqrt(sensitivity*specificity)) %>% arrange(-gmean)\n# th_powdery_mildew <- roc_powdery_mildew %>% slice(1) %>% pull(\".threshold\")\n# th_powdery_mildew\n# \n# preddf <- preddf %>% mutate(complex_p = ifelse(complex_p>=th_complex, 1, 0),\n#                             healthy_p = ifelse(healthy_p>=th_healthy,1,0),\n#                             rust_p = ifelse(rust_p>=th_rust, 1, 0),\n#                             scab_p = ifelse(scab_p>=th_scab, 1, 0),\n#                             frog_eye_leaf_spot_p = ifelse(frog_eye_leaf_spot_p>=th_frog_eye_leaf_spot, 1, 0),\n#                             powdery_mildew_p = ifelse(powdery_mildew_p>=th_powdery_mildew, 1, 0))\n# \n# head(preddf)\n# \n# ### CASO NAO TENHA LABEL, ATRIBUI O DE MAIOR PROB\n# for(i in 1:nrow(preddf)){\n#   a <- preddf %>% slice(i) %>% filter(complex_p==0 & healthy_p==0 & rust_p==0 & scab_p==0 & frog_eye_leaf_spot_p==0 & powdery_mildew_p==0)\n#   if(nrow(a)!=0){\n#     aux <- as.data.frame(pred) %>% slice(i)\n#     maiorp <- apply(aux, 1, which.max)\n#     if(maiorp==1){preddf[i,] <- c(1,0,0,0,0,0)}else{\n#       if(maiorp==2){preddf[i,] <- c(0,1,0,0,0,0)}else{\n#         if(maiorp==3){preddf[i,] <- c(0,0,1,0,0,0)}else{\n#           if(maiorp==4){preddf[i,] <- c(0,0,0,1,0,0)}else{\n#             if(maiorp==5){preddf[i,] <- c(0,0,0,0,1,0)}else{\n#               if(maiorp==6){preddf[i,] <- c(0,0,0,0,0,1)}\n#             }\n#           }\n#         }\n#       }\n#     }\n#   }\n# }\n# \n# preddf %>% filter(complex_p==0 & healthy_p==0 & rust_p==0 & scab_p==0 & frog_eye_leaf_spot_p==0 & powdery_mildew_p==0)\n","metadata":{"jupyter":{"source_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# ## Definir threshold a partir do F score\n# roc_complex <- tibble(complex_t = sample_submission$complex,\n#                       complex_est = pred[,1])\n# \n# roc_complex <- roc_curve(data = roc_complex, truth = as.factor(complex_t), estimate = complex_est)\n# roc_complex <- roc_complex %>% mutate(gmean = sqrt(sensitivity*specificity),\n#                                       fscore = (2*sensitivity*specificity)/(sensitivity+specificity)) %>% arrange(-fscore) #%>% arrange(-gmean)\n# th_complex <- roc_complex %>% slice(1) %>% pull(\".threshold\")\n# th_complex\n# \n# roc_healthy <- tibble(healthy_t = sample_submission$healthy,\n#                       healthy_est = pred[,1])\n# \n# roc_healthy <- roc_curve(data = roc_healthy, truth = as.factor(healthy_t), estimate = healthy_est)\n# roc_healthy <- roc_healthy %>% mutate(gmean = sqrt(sensitivity*specificity),\n#                                       fscore = (2*sensitivity*specificity)/(sensitivity+specificity)) %>% arrange(-fscore) # %>% arrange(-gmean)\n# th_healthy <- roc_healthy %>% slice(1) %>% pull(\".threshold\")\n# th_healthy\n# \n# roc_rust <- tibble(rust_t = sample_submission$rust,\n#                    rust_est = pred[,1])\n# \n# roc_rust <- roc_curve(data = roc_rust, truth = as.factor(rust_t), estimate = rust_est)\n# roc_rust <- roc_rust %>% mutate(gmean = sqrt(sensitivity*specificity),\n#                                 fscore = (2*sensitivity*specificity)/(sensitivity+specificity)) %>% arrange(-fscore) # %>% arrange(-gmean)\n# th_rust <- roc_rust %>% slice(1) %>% pull(\".threshold\")\n# th_rust\n# \n# roc_scab <- tibble(scab_t = sample_submission$scab,\n#                    scab_est = pred[,1])\n# \n# roc_scab <- roc_curve(data = roc_scab, truth = as.factor(scab_t), estimate = scab_est)\n# roc_scab <- roc_scab %>% mutate(gmean = sqrt(sensitivity*specificity),\n#                                 fscore = (2*sensitivity*specificity)/(sensitivity+specificity)) %>% arrange(-fscore) # %>% arrange(-gmean)\n# th_scab <- roc_scab %>% slice(1) %>% pull(\".threshold\")\n# th_scab\n# \n# roc_frog_eye_leaf_spot <- tibble(frog_eye_leaf_spot_t = sample_submission$frog_eye_leaf_spot,\n#                                  frog_eye_leaf_spot_est = pred[,1])\n# \n# roc_frog_eye_leaf_spot <- roc_curve(data = roc_frog_eye_leaf_spot, truth = as.factor(frog_eye_leaf_spot_t), estimate = frog_eye_leaf_spot_est)\n# roc_frog_eye_leaf_spot <- roc_frog_eye_leaf_spot %>% mutate(gmean = sqrt(sensitivity*specificity),\n#                                                             fscore = (2*sensitivity*specificity)/(sensitivity+specificity)) %>% arrange(-fscore) # %>% arrange(-gmean)\n# th_frog_eye_leaf_spot <- roc_frog_eye_leaf_spot %>% slice(1) %>% pull(\".threshold\")\n# th_frog_eye_leaf_spot\n# \n# roc_powdery_mildew <- tibble(powdery_mildew_t = sample_submission$powdery_mildew,\n#                              powdery_mildew_est = pred[,1])\n# \n# roc_powdery_mildew <- roc_curve(data = roc_powdery_mildew, truth = as.factor(powdery_mildew_t), estimate = powdery_mildew_est)\n# roc_powdery_mildew <- roc_powdery_mildew %>% mutate(gmean = sqrt(sensitivity*specificity),\n#                                                     fscore = (2*sensitivity*specificity)/(sensitivity+specificity)) %>% arrange(-fscore) # %>% arrange(-gmean)\n# th_powdery_mildew <- roc_powdery_mildew %>% slice(1) %>% pull(\".threshold\")\n# th_powdery_mildew\n# \n# preddf <- preddf %>% mutate(complex_p = ifelse(complex_p>=th_complex, 1, 0),\n#                             healthy_p = ifelse(healthy_p>=th_healthy,1,0),\n#                             rust_p = ifelse(rust_p>=th_rust, 1, 0),\n#                             scab_p = ifelse(scab_p>=th_scab, 1, 0),\n#                             frog_eye_leaf_spot_p = ifelse(frog_eye_leaf_spot_p>=th_frog_eye_leaf_spot, 1, 0),\n#                             powdery_mildew_p = ifelse(powdery_mildew_p>=th_powdery_mildew, 1, 0))\n# \n# head(preddf)\n# for(i in 1:nrow(preddf)){\n#   a <- preddf %>% slice(i) %>% filter(complex_p==0 & healthy_p==0 & rust_p==0 & scab_p==0 & frog_eye_leaf_spot_p==0 & powdery_mildew_p==0)\n#   if(nrow(a)!=0){\n#     aux <- as.data.frame(pred) %>% slice(i)\n#     maiorp <- apply(aux, 1, which.max)\n#     if(maiorp==1){preddf[i,] <- c(1,0,0,0,0,0)}else{\n#       if(maiorp==2){preddf[i,] <- c(0,1,0,0,0,0)}else{\n#         if(maiorp==3){preddf[i,] <- c(0,0,1,0,0,0)}else{\n#           if(maiorp==4){preddf[i,] <- c(0,0,0,1,0,0)}else{\n#             if(maiorp==5){preddf[i,] <- c(0,0,0,0,1,0)}else{\n#               if(maiorp==6){preddf[i,] <- c(0,0,0,0,0,1)}\n#             }\n#           }\n#         }\n#       }\n#     }\n#   }\n# }\n# \n# preddf %>% filter(complex_p==0 & healthy_p==0 & rust_p==0 & scab_p==0 & frog_eye_leaf_spot_p==0 & powdery_mildew_p==0)\n","metadata":{"jupyter":{"source_hidden":true}},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# ###roc_auc (testar com auc() do pROC)\n# \n# preddf <- as.data.frame(pred)\n# colnames(preddf) <- c(\"complex_p\", \"healthy_p\",\"rust_p\", \"scab_p\", \"frog_eye_leaf_spot_p\", \"powdery_mildew_p\")\n# \n# roc_complex <- tibble(complex_t = sample_submission$complex,\n#                       complex_est = pred[,1])\n# \n# th_complex <- roc_auc(data = roc_complex, truth = as.factor(complex_t), estimate = complex_est)  %>% pull(\".estimate\")\n# \n# roc_healthy <- tibble(healthy_t = sample_submission$healthy,\n#                       healthy_est = pred[,2])\n# \n# th_healthy <- roc_auc(data = roc_healthy, truth = as.factor(healthy_t), estimate = healthy_est)  %>% pull(\".estimate\")\n# \n# \n# roc_rust <- tibble(rust_t = sample_submission$rust,\n#                    rust_est = pred[,3])\n# \n# th_rust <- roc_auc(data = roc_rust, truth = as.factor(rust_t), estimate = rust_est)  %>% pull(\".estimate\")\n# \n# \n# roc_scab <- tibble(scab_t = sample_submission$scab,\n#                    scab_est = pred[,4])\n# \n# th_scab <- roc_auc(data = roc_scab, truth = as.factor(scab_t), estimate = scab_est) %>% pull(\".estimate\")\n# \n# \n# roc_frog_eye_leaf_spot <- tibble(frog_eye_leaf_spot_t = sample_submission$frog_eye_leaf_spot,\n#                                  frog_eye_leaf_spot_est = pred[,5])\n# \n# th_frog_eye_leaf_spot <- roc_auc(data = roc_frog_eye_leaf_spot, truth = as.factor(frog_eye_leaf_spot_t), estimate = frog_eye_leaf_spot_est) %>% pull(\".estimate\")\n# \n# \n# roc_powdery_mildew <- tibble(powdery_mildew_t = sample_submission$powdery_mildew,\n#                              powdery_mildew_est = pred[,6])\n# \n# th_powdery_mildew <- roc_auc(data = roc_powdery_mildew, truth = as.factor(powdery_mildew_t), estimate = powdery_mildew_est) %>% pull(\".estimate\")\n# \n# \n# preddf <- preddf %>% mutate(complex_p = ifelse(complex_p>=th_complex, 1, 0),\n#                             healthy_p = ifelse(healthy_p>=th_healthy,1,0),\n#                             rust_p = ifelse(rust_p>=th_rust, 1, 0),\n#                             scab_p = ifelse(scab_p>=th_scab, 1, 0),\n#                             frog_eye_leaf_spot_p = ifelse(frog_eye_leaf_spot_p>=th_frog_eye_leaf_spot, 1, 0),\n#                             powdery_mildew_p = ifelse(powdery_mildew_p>=th_powdery_mildew, 1, 0))\n# \n# head(preddf)\n# \n# for(i in 1:nrow(preddf)){\n#   a <- preddf %>% slice(i) %>% filter(complex_p==0 & healthy_p==0 & rust_p==0 & scab_p==0 & frog_eye_leaf_spot_p==0 & powdery_mildew_p==0)\n#   if(nrow(a)!=0){\n#     aux <- as.data.frame(pred) %>% slice(i)\n#     maiorp <- apply(aux, 1, which.max)\n#     if(maiorp==1){preddf[i,] <- c(1,0,0,0,0,0)}else{\n#       if(maiorp==2){preddf[i,] <- c(0,1,0,0,0,0)}else{\n#         if(maiorp==3){preddf[i,] <- c(0,0,1,0,0,0)}else{\n#           if(maiorp==4){preddf[i,] <- c(0,0,0,1,0,0)}else{\n#             if(maiorp==5){preddf[i,] <- c(0,0,0,0,1,0)}else{\n#               if(maiorp==6){preddf[i,] <- c(0,0,0,0,0,1)}\n#             }\n#           }\n#         }\n#       }\n#     }\n#   }\n# }\n# \n# preddf %>% filter(complex_p==0 & healthy_p==0 & rust_p==0 & scab_p==0 & frog_eye_leaf_spot_p==0 & powdery_mildew_p==0)\n# \n# preddf <- preddf %>% mutate(complex_p = ifelse(healthy_p==1, 0, complex_p),\n#                             rust_p = ifelse(healthy_p==1, 0, rust_p),\n#                             scab_p = ifelse(healthy_p==1, 0, scab_p),\n#                             frog_eye_leaf_spot_p = ifelse(healthy_p==1, 0, frog_eye_leaf_spot_p),\n#                             powdery_mildew_p = ifelse(powdery_mildew_p==1, 0, scab_p))\n# \n# #1\n# pred_complex <- as.data.frame(cbind(test$complex, preddf$complex_p))\n# colnames(pred_complex) <- c(\"complex_test\", \"complex_pred\")\n# \n# t0p0_complex <- nrow(pred_complex %>% filter(complex_test == 0, complex_pred == 0)) #tb1\n# t1p0_complex <- nrow(pred_complex %>% filter(complex_test == 1, complex_pred == 0)) #tb2\n# t0p1_complex <- nrow(pred_complex %>% filter(complex_test == 0, complex_pred == 1)) #tb3\n# t1p1_complex <- nrow(pred_complex %>% filter(complex_test == 1, complex_pred == 1)) #tb4\n# \n# \n# #2\n# pred_healthy <- as.data.frame(cbind(test$healthy, preddf$healthy_p))\n# colnames(pred_healthy) <- c(\"healthy_test\", \"healthy_pred\")\n# \n# t0p0_healthy <- nrow(pred_healthy %>% filter(healthy_test == 0, healthy_pred == 0)) #tb1\n# t1p0_healthy <- nrow(pred_healthy %>% filter(healthy_test == 1, healthy_pred == 0)) #tb2\n# t0p1_healthy <- nrow(pred_healthy %>% filter(healthy_test == 0, healthy_pred == 1)) #tb3\n# t1p1_healthy <- nrow(pred_healthy %>% filter(healthy_test == 1, healthy_pred == 1)) #tb4\n# \n# #3\n# pred_rust <- as.data.frame(cbind(test$rust, preddf$rust_p))\n# colnames(pred_rust) <- c(\"rust_test\", \"rust_pred\")\n# \n# t0p0_rust <- nrow(pred_rust %>% filter(rust_test == 0, rust_pred == 0)) #tb1\n# t1p0_rust <- nrow(pred_rust %>% filter(rust_test == 1, rust_pred == 0)) #tb2\n# t0p1_rust <- nrow(pred_rust %>% filter(rust_test == 0, rust_pred == 1)) #tb3\n# t1p1_rust <- nrow(pred_rust %>% filter(rust_test == 1, rust_pred == 1)) #tb4\n# \n# #4\n# pred_scab <- as.data.frame(cbind(test$scab, preddf$scab_p))\n# colnames(pred_scab) <- c(\"scab_test\", \"scab_pred\")\n# \n# t0p0_scab <- nrow(pred_scab %>% filter(scab_test == 0, scab_pred == 0)) #tb1\n# t1p0_scab <- nrow(pred_scab %>% filter(scab_test == 1, scab_pred == 0)) #tb2\n# t0p1_scab <- nrow(pred_scab %>% filter(scab_test == 0, scab_pred == 1)) #tb3\n# t1p1_scab <- nrow(pred_scab %>% filter(scab_test == 1, scab_pred == 1)) #tb4\n# \n# #5\n# pred_frog_eye_leaf_spot <- as.data.frame(cbind(test$frog_eye_leaf_spot, preddf$frog_eye_leaf_spot_p))\n# colnames(pred_frog_eye_leaf_spot) <- c(\"frog_eye_leaf_spot_test\", \"frog_eye_leaf_spot_pred\")\n# \n# t0p0_frog_eye_leaf_spot <- nrow(pred_frog_eye_leaf_spot %>% filter(frog_eye_leaf_spot_test == 0, frog_eye_leaf_spot_pred == 0)) #tb1\n# t1p0_frog_eye_leaf_spot <- nrow(pred_frog_eye_leaf_spot %>% filter(frog_eye_leaf_spot_test == 1, frog_eye_leaf_spot_pred == 0)) #tb2\n# t0p1_frog_eye_leaf_spot <- nrow(pred_frog_eye_leaf_spot %>% filter(frog_eye_leaf_spot_test == 0, frog_eye_leaf_spot_pred == 1)) #tb3\n# t1p1_frog_eye_leaf_spot <- nrow(pred_frog_eye_leaf_spot %>% filter(frog_eye_leaf_spot_test == 1, frog_eye_leaf_spot_pred == 1)) #tb4\n# \n# #6\n# pred_powdery_mildew <- as.data.frame(cbind(test$powdery_mildew, preddf$powdery_mildew_p))\n# colnames(pred_powdery_mildew) <- c(\"powdery_mildew_test\", \"powdery_mildew_pred\")\n# \n# t0p0_powdery_mildew <- nrow(pred_powdery_mildew %>% filter(powdery_mildew_test == 0, powdery_mildew_pred == 0)) #tb1\n# t1p0_powdery_mildew <- nrow(pred_powdery_mildew %>% filter(powdery_mildew_test == 1, powdery_mildew_pred == 0)) #tb2\n# t0p1_powdery_mildew <- nrow(pred_powdery_mildew %>% filter(powdery_mildew_test == 0, powdery_mildew_pred == 1)) #tb3\n# t1p1_powdery_mildew <- nrow(pred_powdery_mildew %>% filter(powdery_mildew_test == 1, powdery_mildew_pred == 1)) #tb4\n# \n# calculate_stats <- function(tb1, tb2, tb3, tb4, labelname) {\n#   acc <- (tb1 + tb4)/(tb1 + tb2 + tb3 + tb4)\n#   recall <- tb4/(tb4 + tb3)\n#   precision <- tb4/(tb4 + tb2)\n#   f1 <- 2 * ((precision * recall) / (precision + recall))\n#   \n#   cat(labelname, \": \\n\")\n#   cat(\"\\tAccuracy = \", acc*100, \"%.\")\n#   cat(\"\\n\\tPrecision = \", precision*100, \"%.\")\n#   cat(\"\\n\\tRecall = \", recall*100, \"%.\")\n#   cat(\"\\n\\tF1 Score = \", f1*100, \"%.\\n\\n\")\n#   return(f1)\n# }\n# \n# #acc_complex <- (tb1 + tb4)/(tb1 + tb2 + tb3 + tb4)\n# \n# f1_complex <- calculate_stats(t0p0_complex, t1p0_complex, t0p1_complex, t1p1_complex, \"complex\")\n# f1_healthy <- calculate_stats(t0p0_healthy, t1p0_healthy, t0p1_healthy, t1p1_healthy, \"healthy\")\n# f1_rust <- calculate_stats(t0p0_rust, t1p0_rust, t0p1_rust, t1p1_rust, \"rust\")\n# f1_scab <- calculate_stats(t0p0_scab, t1p0_scab, t0p1_scab, t1p1_scab, \"scab\")\n# f1_frog_eye_leaf_spot <- calculate_stats(t0p0_frog_eye_leaf_spot, t1p0_frog_eye_leaf_spot, t0p1_frog_eye_leaf_spot, t1p1_frog_eye_leaf_spot, \"frog_eye_leaf_spot\")\n# f1_powdery_mildew <- calculate_stats(t0p0_powdery_mildew, t1p0_powdery_mildew, t0p1_powdery_mildew, t1p1_powdery_mildew, \"powdery_mildew\")","metadata":{"jupyter":{"source_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"library(pROC)\n\npreddf <- as.data.frame(pred)\ncolnames(preddf) <- c(\"complex_p\", \"healthy_p\",\"rust_p\", \"scab_p\", \"frog_eye_leaf_spot_p\", \"powdery_mildew_p\")\n\nroc_complex <- roc(sample_submission$complex,  pred[,1])\nth_complex <- auc(roc_complex)\nth_complex\n\nroc_healthy <- roc(sample_submission$healthy,  pred[,2])\nth_healthy <- auc(roc_healthy)\nth_healthy\n\nroc_rust <- roc(sample_submission$rust,  pred[,3])\nth_rust <- auc(roc_rust)\nth_rust\n\nroc_scab <- roc(sample_submission$scab,  pred[,4])\nth_scab <- auc(roc_scab)\nth_scab\n\nroc_frog_eye_leaf_spot <- roc(sample_submission$frog_eye_leaf_spot,  pred[,5])\nth_frog_eye_leaf_spot <- auc(roc_frog_eye_leaf_spot)\nth_frog_eye_leaf_spot\n\nroc_powdery_mildew <- roc(sample_submission$powdery_mildew,  pred[,6])\nth_powdery_mildew <- auc(roc_powdery_mildew)\nth_powdery_mildew\n\npreddf <- preddf %>% mutate(complex_p = ifelse(complex_p>=th_complex, 1, 0),\n                            healthy_p = ifelse(healthy_p>=th_healthy,1,0),\n                            rust_p = ifelse(rust_p>=th_rust, 1, 0),\n                            scab_p = ifelse(scab_p>=th_scab, 1, 0),\n                            frog_eye_leaf_spot_p = ifelse(frog_eye_leaf_spot_p>=th_frog_eye_leaf_spot, 1, 0),\n                            powdery_mildew_p = ifelse(powdery_mildew_p>=th_powdery_mildew, 1, 0))\n\nfor(i in 1:nrow(preddf)){\n    a <- preddf %>% slice(i) %>% filter(complex_p==0 & healthy_p==0 & rust_p==0 & scab_p==0 & frog_eye_leaf_spot_p==0 & powdery_mildew_p==0)\n    if(nrow(a)!=0){\n        aux <- as.data.frame(pred) %>% slice(i)\n        maiorp <- apply(aux, 1, which.max)\n        if(maiorp==1){preddf[i,] <- c(1,0,0,0,0,0)}else{\n            if(maiorp==2){preddf[i,] <- c(0,1,0,0,0,0)}else{\n                if(maiorp==3){preddf[i,] <- c(0,0,1,0,0,0)}else{\n                    if(maiorp==4){preddf[i,] <- c(0,0,0,1,0,0)}else{\n                        if(maiorp==5){preddf[i,] <- c(0,0,0,0,1,0)}else{\n                            if(maiorp==6){preddf[i,] <- c(0,0,0,0,0,1)}\n                        }\n                    }\n                }\n            }\n        }\n    }\n}\n\nhead(preddf)\n\n#1\npred_complex <- as.data.frame(cbind(test$complex, preddf$complex_p))\ncolnames(pred_complex) <- c(\"complex_test\", \"complex_pred\")\n\nt0p0_complex <- nrow(pred_complex %>% filter(complex_test == 0, complex_pred == 0)) #tb1\nt1p0_complex <- nrow(pred_complex %>% filter(complex_test == 1, complex_pred == 0)) #tb2\nt0p1_complex <- nrow(pred_complex %>% filter(complex_test == 0, complex_pred == 1)) #tb3\nt1p1_complex <- nrow(pred_complex %>% filter(complex_test == 1, complex_pred == 1)) #tb4\n\n\n#2\npred_healthy <- as.data.frame(cbind(test$healthy, preddf$healthy_p))\ncolnames(pred_healthy) <- c(\"healthy_test\", \"healthy_pred\")\n\nt0p0_healthy <- nrow(pred_healthy %>% filter(healthy_test == 0, healthy_pred == 0)) #tb1\nt1p0_healthy <- nrow(pred_healthy %>% filter(healthy_test == 1, healthy_pred == 0)) #tb2\nt0p1_healthy <- nrow(pred_healthy %>% filter(healthy_test == 0, healthy_pred == 1)) #tb3\nt1p1_healthy <- nrow(pred_healthy %>% filter(healthy_test == 1, healthy_pred == 1)) #tb4\n\n#3\npred_rust <- as.data.frame(cbind(test$rust, preddf$rust_p))\ncolnames(pred_rust) <- c(\"rust_test\", \"rust_pred\")\n\nt0p0_rust <- nrow(pred_rust %>% filter(rust_test == 0, rust_pred == 0)) #tb1\nt1p0_rust <- nrow(pred_rust %>% filter(rust_test == 1, rust_pred == 0)) #tb2\nt0p1_rust <- nrow(pred_rust %>% filter(rust_test == 0, rust_pred == 1)) #tb3\nt1p1_rust <- nrow(pred_rust %>% filter(rust_test == 1, rust_pred == 1)) #tb4\n\n#4\npred_scab <- as.data.frame(cbind(test$scab, preddf$scab_p))\ncolnames(pred_scab) <- c(\"scab_test\", \"scab_pred\")\n\nt0p0_scab <- nrow(pred_scab %>% filter(scab_test == 0, scab_pred == 0)) #tb1\nt1p0_scab <- nrow(pred_scab %>% filter(scab_test == 1, scab_pred == 0)) #tb2\nt0p1_scab <- nrow(pred_scab %>% filter(scab_test == 0, scab_pred == 1)) #tb3\nt1p1_scab <- nrow(pred_scab %>% filter(scab_test == 1, scab_pred == 1)) #tb4\n\n#5\npred_frog_eye_leaf_spot <- as.data.frame(cbind(test$frog_eye_leaf_spot, preddf$frog_eye_leaf_spot_p))\ncolnames(pred_frog_eye_leaf_spot) <- c(\"frog_eye_leaf_spot_test\", \"frog_eye_leaf_spot_pred\")\n\nt0p0_frog_eye_leaf_spot <- nrow(pred_frog_eye_leaf_spot %>% filter(frog_eye_leaf_spot_test == 0, frog_eye_leaf_spot_pred == 0)) #tb1\nt1p0_frog_eye_leaf_spot <- nrow(pred_frog_eye_leaf_spot %>% filter(frog_eye_leaf_spot_test == 1, frog_eye_leaf_spot_pred == 0)) #tb2\nt0p1_frog_eye_leaf_spot <- nrow(pred_frog_eye_leaf_spot %>% filter(frog_eye_leaf_spot_test == 0, frog_eye_leaf_spot_pred == 1)) #tb3\nt1p1_frog_eye_leaf_spot <- nrow(pred_frog_eye_leaf_spot %>% filter(frog_eye_leaf_spot_test == 1, frog_eye_leaf_spot_pred == 1)) #tb4\n\n#6\npred_powdery_mildew <- as.data.frame(cbind(test$powdery_mildew, preddf$powdery_mildew_p))\ncolnames(pred_powdery_mildew) <- c(\"powdery_mildew_test\", \"powdery_mildew_pred\")\n\nt0p0_powdery_mildew <- nrow(pred_powdery_mildew %>% filter(powdery_mildew_test == 0, powdery_mildew_pred == 0)) #tb1\nt1p0_powdery_mildew <- nrow(pred_powdery_mildew %>% filter(powdery_mildew_test == 1, powdery_mildew_pred == 0)) #tb2\nt0p1_powdery_mildew <- nrow(pred_powdery_mildew %>% filter(powdery_mildew_test == 0, powdery_mildew_pred == 1)) #tb3\nt1p1_powdery_mildew <- nrow(pred_powdery_mildew %>% filter(powdery_mildew_test == 1, powdery_mildew_pred == 1)) #tb4\n\ncalculate_stats <- function(tb1, tb2, tb3, tb4, labelname) {\n  acc <- (tb1 + tb4)/(tb1 + tb2 + tb3 + tb4)\n  recall <- tb4/(tb4 + tb3)\n  precision <- tb4/(tb4 + tb2)\n  f1 <- 2 * ((precision * recall) / (precision + recall))\n  \n  cat(labelname, \": \\n\")\n  cat(\"\\tAccuracy = \", acc*100, \"%.\")\n  cat(\"\\n\\tPrecision = \", precision*100, \"%.\")\n  cat(\"\\n\\tRecall = \", recall*100, \"%.\")\n  cat(\"\\n\\tF1 Score = \", f1*100, \"%.\\n\\n\")\n  return(f1)\n}\n\n#acc_complex <- (tb1 + tb4)/(tb1 + tb2 + tb3 + tb4)\n\nf1_complex <- calculate_stats(t0p0_complex, t1p0_complex, t0p1_complex, t1p1_complex, \"complex\")\nf1_healthy <- calculate_stats(t0p0_healthy, t1p0_healthy, t0p1_healthy, t1p1_healthy, \"healthy\")\nf1_rust <- calculate_stats(t0p0_rust, t1p0_rust, t0p1_rust, t1p1_rust, \"rust\")\nf1_scab <- calculate_stats(t0p0_scab, t1p0_scab, t0p1_scab, t1p1_scab, \"scab\")\nf1_frog_eye_leaf_spot <- calculate_stats(t0p0_frog_eye_leaf_spot, t1p0_frog_eye_leaf_spot, t0p1_frog_eye_leaf_spot, t1p1_frog_eye_leaf_spot, \"frog_eye_leaf_spot\")\nf1_powdery_mildew <- calculate_stats(t0p0_powdery_mildew, t1p0_powdery_mildew, t0p1_powdery_mildew, t1p1_powdery_mildew, \"powdery_mildew\")","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"### mono\n#prediction <- prediction %>% mutate(complex_p = ifelse(str_detect(labels, \"complex\"), 1, 0),\n#                        healthy_p = ifelse(str_detect(labels, \"healthy\"), 1, 0),\n#                        rust_p = ifelse(str_detect(labels, \"rust\"), 1, 0),\n#                        scab_p = ifelse(str_detect(labels, \"scab\"), 1, 0),\n#                        frog_eye_leaf_spot_p = ifelse(str_detect(labels, \"frog_eye_leaf_spot\"), 1, 0),\n#                        powdery_mildew_p = ifelse(str_detect(labels, \"powdery_mildew\"), 1, 0))\n","metadata":{"jupyter":{"source_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# preddf <- as.data.frame(pred)\n# colnames(preddf) <- c(\"complex_p\", \"healthy_p\",\"rust_p\", \"scab_p\", \"frog_eye_leaf_spot_p\", \"powdery_mildew_p\")\n# \n# threshold <- 0.25 ###definir valor a partir da curva roc\n# preddf <- preddf %>% mutate_all(funs(ifelse(. > threshold, 1, 0)))\n# preddf <- preddf %>% mutate(complex_p = ifelse(healthy_p==1, 0, complex_p),\n#                             rust_p = ifelse(healthy_p==1, 0, rust_p),\n#                             scab_p = ifelse(healthy_p==1, 0, scab_p),\n#                             frog_eye_leaf_spot_p = ifelse(healthy_p==1, 0, frog_eye_leaf_spot_p),\n#                             powdery_mildew_p = ifelse(powdery_mildew_p==1, 0, scab_p),)\n# head(preddf)\n# \n# #1\n# pred_complex <- as.data.frame(cbind(test$complex, preddf$complex_p))\n# colnames(pred_complex) <- c(\"complex_test\", \"complex_pred\")\n# \n# t0p0_complex <- nrow(pred_complex %>% filter(complex_test == 0, complex_pred == 0)) #tb1\n# t1p0_complex <- nrow(pred_complex %>% filter(complex_test == 1, complex_pred == 0)) #tb2\n# t0p1_complex <- nrow(pred_complex %>% filter(complex_test == 0, complex_pred == 1)) #tb3\n# t1p1_complex <- nrow(pred_complex %>% filter(complex_test == 1, complex_pred == 1)) #tb4\n# \n# \n# #2\n# pred_healthy <- as.data.frame(cbind(test$healthy, preddf$healthy_p))\n# colnames(pred_healthy) <- c(\"healthy_test\", \"healthy_pred\")\n# \n# t0p0_healthy <- nrow(pred_healthy %>% filter(healthy_test == 0, healthy_pred == 0)) #tb1\n# t1p0_healthy <- nrow(pred_healthy %>% filter(healthy_test == 1, healthy_pred == 0)) #tb2\n# t0p1_healthy <- nrow(pred_healthy %>% filter(healthy_test == 0, healthy_pred == 1)) #tb3\n# t1p1_healthy <- nrow(pred_healthy %>% filter(healthy_test == 1, healthy_pred == 1)) #tb4\n# \n# #3\n# pred_rust <- as.data.frame(cbind(test$rust, preddf$rust_p))\n# colnames(pred_rust) <- c(\"rust_test\", \"rust_pred\")\n# \n# t0p0_rust <- nrow(pred_rust %>% filter(rust_test == 0, rust_pred == 0)) #tb1\n# t1p0_rust <- nrow(pred_rust %>% filter(rust_test == 1, rust_pred == 0)) #tb2\n# t0p1_rust <- nrow(pred_rust %>% filter(rust_test == 0, rust_pred == 1)) #tb3\n# t1p1_rust <- nrow(pred_rust %>% filter(rust_test == 1, rust_pred == 1)) #tb4\n# \n# #4\n# pred_scab <- as.data.frame(cbind(test$scab, preddf$scab_p))\n# colnames(pred_scab) <- c(\"scab_test\", \"scab_pred\")\n# \n# t0p0_scab <- nrow(pred_scab %>% filter(scab_test == 0, scab_pred == 0)) #tb1\n# t1p0_scab <- nrow(pred_scab %>% filter(scab_test == 1, scab_pred == 0)) #tb2\n# t0p1_scab <- nrow(pred_scab %>% filter(scab_test == 0, scab_pred == 1)) #tb3\n# t1p1_scab <- nrow(pred_scab %>% filter(scab_test == 1, scab_pred == 1)) #tb4\n# \n# #5\n# pred_frog_eye_leaf_spot <- as.data.frame(cbind(test$frog_eye_leaf_spot, preddf$frog_eye_leaf_spot_p))\n# colnames(pred_frog_eye_leaf_spot) <- c(\"frog_eye_leaf_spot_test\", \"frog_eye_leaf_spot_pred\")\n# \n# t0p0_frog_eye_leaf_spot <- nrow(pred_frog_eye_leaf_spot %>% filter(frog_eye_leaf_spot_test == 0, frog_eye_leaf_spot_pred == 0)) #tb1\n# t1p0_frog_eye_leaf_spot <- nrow(pred_frog_eye_leaf_spot %>% filter(frog_eye_leaf_spot_test == 1, frog_eye_leaf_spot_pred == 0)) #tb2\n# t0p1_frog_eye_leaf_spot <- nrow(pred_frog_eye_leaf_spot %>% filter(frog_eye_leaf_spot_test == 0, frog_eye_leaf_spot_pred == 1)) #tb3\n# t1p1_frog_eye_leaf_spot <- nrow(pred_frog_eye_leaf_spot %>% filter(frog_eye_leaf_spot_test == 1, frog_eye_leaf_spot_pred == 1)) #tb4\n# \n# #6\n# pred_powdery_mildew <- as.data.frame(cbind(test$powdery_mildew, preddf$powdery_mildew_p))\n# colnames(pred_powdery_mildew) <- c(\"powdery_mildew_test\", \"powdery_mildew_pred\")\n# \n# t0p0_powdery_mildew <- nrow(pred_powdery_mildew %>% filter(powdery_mildew_test == 0, powdery_mildew_pred == 0)) #tb1\n# t1p0_powdery_mildew <- nrow(pred_powdery_mildew %>% filter(powdery_mildew_test == 1, powdery_mildew_pred == 0)) #tb2\n# t0p1_powdery_mildew <- nrow(pred_powdery_mildew %>% filter(powdery_mildew_test == 0, powdery_mildew_pred == 1)) #tb3\n# t1p1_powdery_mildew <- nrow(pred_powdery_mildew %>% filter(powdery_mildew_test == 1, powdery_mildew_pred == 1)) #tb4\n# \n# calculate_stats <- function(tb1, tb2, tb3, tb4, labelname) {\n#   acc <- (tb1 + tb4)/(tb1 + tb2 + tb3 + tb4)\n#   recall <- tb4/(tb4 + tb3)\n#   precision <- tb4/(tb4 + tb2)\n#   f1 <- 2 * ((precision * recall) / (precision + recall))\n#   \n#   cat(labelname, \": \\n\")\n#   cat(\"\\tAccuracy = \", acc*100, \"%.\")\n#   cat(\"\\n\\tPrecision = \", precision*100, \"%.\")\n#   cat(\"\\n\\tRecall = \", recall*100, \"%.\")\n#   cat(\"\\n\\tF1 Score = \", f1*100, \"%.\\n\\n\")\n#   return(f1)\n# }\n# \n# #acc_complex <- (tb1 + tb4)/(tb1 + tb2 + tb3 + tb4)\n# \n# f1_complex <- calculate_stats(t0p0_complex, t1p0_complex, t0p1_complex, t1p1_complex, \"complex\")\n# f1_healthy <- calculate_stats(t0p0_healthy, t1p0_healthy, t0p1_healthy, t1p1_healthy, \"healthy\")\n# f1_rust <- calculate_stats(t0p0_rust, t1p0_rust, t0p1_rust, t1p1_rust, \"rust\")\n# f1_scab <- calculate_stats(t0p0_scab, t1p0_scab, t0p1_scab, t1p1_scab, \"scab\")\n# f1_frog_eye_leaf_spot <- calculate_stats(t0p0_frog_eye_leaf_spot, t1p0_frog_eye_leaf_spot, t0p1_frog_eye_leaf_spot, t1p1_frog_eye_leaf_spot, \"frog_eye_leaf_spot\")\n# f1_powdery_mildew <- calculate_stats(t0p0_powdery_mildew, t1p0_powdery_mildew, t0p1_powdery_mildew, t1p1_powdery_mildew, \"powdery_mildew\")","metadata":{"jupyter":{"source_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Submission","metadata":{}},{"cell_type":"code","source":"#head(test)\n\ntest_data_gen <- image_data_generator(\n  rescale = 1/255\n)\n\nsample_submission <- read_csv(\"../input/plant-pathology-2021-fgvc8/sample_submission.csv\")\ntest_generator <- flow_images_from_dataframe(dataframe = sample_submission, \n                                              directory = \"../input/plant-pathology-2021-fgvc8/test_images\",\n                                              class_mode = NULL,\n                                              x_col = \"image\",\n                                              y_col = NULL,\n                                              target_size = target_size,\n                                              shuffle = FALSE,\n                                              generator = test_data_gen, \n                                              batch_size=32) #testar 1\n\nnum_test_images <- nrow(sample_submission)\n\npred <- modelmeu %>% predict_generator(test_generator, steps = num_test_images)\nhead(pred)\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"preddf <- as.data.frame(pred)\ncolnames(preddf) <- c(\"complex_p\", \"healthy_p\",\"rust_p\", \"scab_p\", \"frog_eye_leaf_spot_p\", \"powdery_mildew_p\")\n\n\npreddf <- preddf %>% mutate(complex_p = ifelse(complex_p>=th_complex, 1, 0),\n                            healthy_p = ifelse(healthy_p>=th_healthy,1,0),\n                            rust_p = ifelse(rust_p>=th_rust, 1, 0),\n                            scab_p = ifelse(scab_p>=th_scab, 1, 0),\n                            frog_eye_leaf_spot_p = ifelse(frog_eye_leaf_spot_p>=th_frog_eye_leaf_spot, 1, 0),\n                            powdery_mildew_p = ifelse(powdery_mildew_p>=th_powdery_mildew, 1, 0))\n\nhead(preddf)\n\n\npreddf %>% filter(complex_p==0 & healthy_p==0 & rust_p==0 & scab_p==0 & frog_eye_leaf_spot_p==0 & powdery_mildew_p==0)\n\nfor(i in 1:nrow(preddf)){\n    a <- preddf %>% slice(i) %>% filter(complex_p==0 & healthy_p==0 & rust_p==0 & scab_p==0 & frog_eye_leaf_spot_p==0 & powdery_mildew_p==0)\n    if(nrow(a)!=0){\n        aux <- as.data.frame(pred) %>% slice(i)\n        maiorp <- apply(aux, 1, which.max)\n        if(maiorp==1){preddf[i,] <- c(1,0,0,0,0,0)}else{\n            if(maiorp==2){preddf[i,] <- c(0,1,0,0,0,0)}else{\n                if(maiorp==3){preddf[i,] <- c(0,0,1,0,0,0)}else{\n                    if(maiorp==4){preddf[i,] <- c(0,0,0,1,0,0)}else{\n                        if(maiorp==5){preddf[i,] <- c(0,0,0,0,1,0)}else{\n                            if(maiorp==6){preddf[i,] <- c(0,0,0,0,0,1)}\n                        }\n                    }\n                }\n            }\n        }\n    }\n}\n\n\npreddf <- preddf %>% mutate(complex_p = ifelse(healthy_p==1, 0, complex_p),\n                            rust_p = ifelse(healthy_p==1, 0, rust_p),\n                            scab_p = ifelse(healthy_p==1, 0, scab_p),\n                            frog_eye_leaf_spot_p = ifelse(healthy_p==1, 0, frog_eye_leaf_spot_p),\n                            powdery_mildew_p = ifelse(powdery_mildew_p==1, 0, scab_p))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"preddf <- preddf %>% mutate(labels = ifelse(complex_p == 1, \"complex,\", \" \"),\n                  labels = ifelse(healthy_p == 1, paste0(labels,\"healthy,\"), labels),\n                  labels = ifelse(rust_p == 1, paste0(labels,\"rust,\"), labels),\n                  labels = ifelse(scab_p == 1, paste0(labels,\"scab,\"), labels),\n                  labels = ifelse(frog_eye_leaf_spot_p == 1, paste0(labels,\"frog_eye_leaf_spot,\"), labels),\n                  labels = ifelse(powdery_mildew_p == 1, paste0(labels,\"powdery_mildew,\"), labels),\n                  labels = str_sub(labels,start=1,end=-2))\n\nlabelt <- preddf %>% pull(labels)\nlabelt\n\nprediction <- tibble(image = sample_submission$image, labels = labelt)\n\nhead(prediction)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"write_csv(prediction, file='submission.csv')","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Predicao 2 (threshold p > 0.5)","metadata":{}},{"cell_type":"code","source":"preddf <- as.data.frame(pred)\ncolnames(preddf) <- c(\"complex_p\", \"healthy_p\",\"rust_p\", \"scab_p\", \"frog_eye_leaf_spot_p\", \"powdery_mildew_p\")\n\nthreshold <- 0.5 ###definir valor a partir da curva roc\npreddf <- preddf %>% mutate_all(funs(ifelse(. > threshold, 1, 0)))\npreddf <- preddf %>% mutate(complex_p = ifelse(healthy_p==1, 0, complex_p),\n                            rust_p = ifelse(healthy_p==1, 0, rust_p),\n                            scab_p = ifelse(healthy_p==1, 0, scab_p),\n                            frog_eye_leaf_spot_p = ifelse(healthy_p==1, 0, frog_eye_leaf_spot_p),\n                            powdery_mildew_p = ifelse(powdery_mildew_p==1, 0, scab_p),)\nhead(preddf)\n\n#1\npred_complex <- as.data.frame(cbind(test$complex, preddf$complex_p))\ncolnames(pred_complex) <- c(\"complex_test\", \"complex_pred\")\n\nt0p0_complex <- nrow(pred_complex %>% filter(complex_test == 0, complex_pred == 0)) #tb1\nt1p0_complex <- nrow(pred_complex %>% filter(complex_test == 1, complex_pred == 0)) #tb2\nt0p1_complex <- nrow(pred_complex %>% filter(complex_test == 0, complex_pred == 1)) #tb3\nt1p1_complex <- nrow(pred_complex %>% filter(complex_test == 1, complex_pred == 1)) #tb4\n\n\n#2\npred_healthy <- as.data.frame(cbind(test$healthy, preddf$healthy_p))\ncolnames(pred_healthy) <- c(\"healthy_test\", \"healthy_pred\")\n\nt0p0_healthy <- nrow(pred_healthy %>% filter(healthy_test == 0, healthy_pred == 0)) #tb1\nt1p0_healthy <- nrow(pred_healthy %>% filter(healthy_test == 1, healthy_pred == 0)) #tb2\nt0p1_healthy <- nrow(pred_healthy %>% filter(healthy_test == 0, healthy_pred == 1)) #tb3\nt1p1_healthy <- nrow(pred_healthy %>% filter(healthy_test == 1, healthy_pred == 1)) #tb4\n\n#3\npred_rust <- as.data.frame(cbind(test$rust, preddf$rust_p))\ncolnames(pred_rust) <- c(\"rust_test\", \"rust_pred\")\n\nt0p0_rust <- nrow(pred_rust %>% filter(rust_test == 0, rust_pred == 0)) #tb1\nt1p0_rust <- nrow(pred_rust %>% filter(rust_test == 1, rust_pred == 0)) #tb2\nt0p1_rust <- nrow(pred_rust %>% filter(rust_test == 0, rust_pred == 1)) #tb3\nt1p1_rust <- nrow(pred_rust %>% filter(rust_test == 1, rust_pred == 1)) #tb4\n\n#4\npred_scab <- as.data.frame(cbind(test$scab, preddf$scab_p))\ncolnames(pred_scab) <- c(\"scab_test\", \"scab_pred\")\n\nt0p0_scab <- nrow(pred_scab %>% filter(scab_test == 0, scab_pred == 0)) #tb1\nt1p0_scab <- nrow(pred_scab %>% filter(scab_test == 1, scab_pred == 0)) #tb2\nt0p1_scab <- nrow(pred_scab %>% filter(scab_test == 0, scab_pred == 1)) #tb3\nt1p1_scab <- nrow(pred_scab %>% filter(scab_test == 1, scab_pred == 1)) #tb4\n\n#5\npred_frog_eye_leaf_spot <- as.data.frame(cbind(test$frog_eye_leaf_spot, preddf$frog_eye_leaf_spot_p))\ncolnames(pred_frog_eye_leaf_spot) <- c(\"frog_eye_leaf_spot_test\", \"frog_eye_leaf_spot_pred\")\n\nt0p0_frog_eye_leaf_spot <- nrow(pred_frog_eye_leaf_spot %>% filter(frog_eye_leaf_spot_test == 0, frog_eye_leaf_spot_pred == 0)) #tb1\nt1p0_frog_eye_leaf_spot <- nrow(pred_frog_eye_leaf_spot %>% filter(frog_eye_leaf_spot_test == 1, frog_eye_leaf_spot_pred == 0)) #tb2\nt0p1_frog_eye_leaf_spot <- nrow(pred_frog_eye_leaf_spot %>% filter(frog_eye_leaf_spot_test == 0, frog_eye_leaf_spot_pred == 1)) #tb3\nt1p1_frog_eye_leaf_spot <- nrow(pred_frog_eye_leaf_spot %>% filter(frog_eye_leaf_spot_test == 1, frog_eye_leaf_spot_pred == 1)) #tb4\n\n#6\npred_powdery_mildew <- as.data.frame(cbind(test$powdery_mildew, preddf$powdery_mildew_p))\ncolnames(pred_powdery_mildew) <- c(\"powdery_mildew_test\", \"powdery_mildew_pred\")\n\nt0p0_powdery_mildew <- nrow(pred_powdery_mildew %>% filter(powdery_mildew_test == 0, powdery_mildew_pred == 0)) #tb1\nt1p0_powdery_mildew <- nrow(pred_powdery_mildew %>% filter(powdery_mildew_test == 1, powdery_mildew_pred == 0)) #tb2\nt0p1_powdery_mildew <- nrow(pred_powdery_mildew %>% filter(powdery_mildew_test == 0, powdery_mildew_pred == 1)) #tb3\nt1p1_powdery_mildew <- nrow(pred_powdery_mildew %>% filter(powdery_mildew_test == 1, powdery_mildew_pred == 1)) #tb4\n\ncalculate_stats <- function(tb1, tb2, tb3, tb4, labelname) {\n  acc <- (tb1 + tb4)/(tb1 + tb2 + tb3 + tb4)\n  recall <- tb4/(tb4 + tb3)\n  precision <- tb4/(tb4 + tb2)\n  f1 <- 2 * ((precision * recall) / (precision + recall))\n\n  cat(labelname, \": \\n\")\n  cat(\"\\tAccuracy = \", acc*100, \"%.\")\n  cat(\"\\n\\tPrecision = \", precision*100, \"%.\")\n  cat(\"\\n\\tRecall = \", recall*100, \"%.\")\n  cat(\"\\n\\tF1 Score = \", f1*100, \"%.\\n\\n\")\n  return(f1)\n}\n\n#acc_complex <- (tb1 + tb4)/(tb1 + tb2 + tb3 + tb4)\n\nf1_complex <- calculate_stats(t0p0_complex, t1p0_complex, t0p1_complex, t1p1_complex, \"complex\")\nf1_healthy <- calculate_stats(t0p0_healthy, t1p0_healthy, t0p1_healthy, t1p1_healthy, \"healthy\")\nf1_rust <- calculate_stats(t0p0_rust, t1p0_rust, t0p1_rust, t1p1_rust, \"rust\")\nf1_scab <- calculate_stats(t0p0_scab, t1p0_scab, t0p1_scab, t1p1_scab, \"scab\")\nf1_frog_eye_leaf_spot <- calculate_stats(t0p0_frog_eye_leaf_spot, t1p0_frog_eye_leaf_spot, t0p1_frog_eye_leaf_spot, t1p1_frog_eye_leaf_spot, \"frog_eye_leaf_spot\")\nf1_powdery_mildew <- calculate_stats(t0p0_powdery_mildew, t1p0_powdery_mildew, t0p1_powdery_mildew, t1p1_powdery_mildew, \"powdery_mildew\")","metadata":{},"execution_count":null,"outputs":[]}]}