{"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":"4.0.5"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"library(tidyverse)\nlibrary(keras)\nlist.files(path = \"../input\")\n","metadata":{"_uuid":"3f1fa821-30d3-4c14-840b-8bd11ffc2bf1","_cell_guid":"03320764-e40d-4516-95b4-677c51bdfbb6","collapsed":false,"jupyter":{"outputs_hidden":false},"execution":{"iopub.status.busy":"2022-08-23T17:43:04.763259Z","iopub.execute_input":"2022-08-23T17:43:04.764746Z","iopub.status.idle":"2022-08-23T17:43:04.790687Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"list.files(path = \"../input/digit-recognizer\")","metadata":{"execution":{"iopub.status.busy":"2022-08-23T17:43:04.792917Z","iopub.execute_input":"2022-08-23T17:43:04.794187Z","iopub.status.idle":"2022-08-23T17:43:04.812169Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train <- read_csv(\"../input/digit-recognizer/train.csv\")\ntest <- read_csv(\"../input/digit-recognizer/test.csv\")\nsubmission <- read_csv(\"../input/digit-recognizer/sample_submission.csv\")","metadata":{"execution":{"iopub.status.busy":"2022-08-23T17:43:04.816187Z","iopub.execute_input":"2022-08-23T17:43:04.818529Z","iopub.status.idle":"2022-08-23T17:43:12.759743Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"head(train)\ndim(train)\nhead(test)\ndim(test)\nhead(submission)\ndim(submission)","metadata":{"execution":{"iopub.status.busy":"2022-08-23T17:43:12.762012Z","iopub.execute_input":"2022-08-23T17:43:12.763304Z","iopub.status.idle":"2022-08-23T17:43:12.967539Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\n\nset.seed(12345)\ntrain <- train %>% mutate(flag = sample(c(0,1), n(), prob = c(.9,.1), replace= TRUE))\n\ntrain %>% select(label, flag) %>% head()\n\n\ntrain %>% \n    group_by(flag) %>%\n    summarise(n = n()) %>%\n    mutate(freq = n/sum(n))\n\ntrain_local <- train %>% filter(flag == 0) %>% select(-flag)\ntest_local <- train %>% filter(flag == 1) %>% select(-flag)\n\ndim(train_local)\n\ndim(test_local)\n\n","metadata":{"execution":{"iopub.status.busy":"2022-08-23T17:43:12.969755Z","iopub.execute_input":"2022-08-23T17:43:12.971099Z","iopub.status.idle":"2022-08-23T17:43:13.330734Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x_train_local <- train_local %>% select(-label) %>% as.matrix()\ny_train_local <- train_local %>% select(label) %>% as.matrix()\n\nx_test_local <- test_local %>% select(-label) %>% as.matrix()\ny_test_local <- test_local %>% select(label) %>% as.matrix()\n\n#x_train_local <- array_reshape(x_train_local, c(nrow(x_train_local), 784))\ndim(x_train_local)\n#x_test_local <- array_reshape(x_test_local, c(nrow(x_test_local), 784))\ndim(x_test_local)\n","metadata":{"execution":{"iopub.status.busy":"2022-08-23T17:43:13.333081Z","iopub.execute_input":"2022-08-23T17:43:13.334470Z","iopub.status.idle":"2022-08-23T17:43:13.808772Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x_train_local <- x_train_local/255\nx_test_local <- x_test_local/255\n\n\ny_train_local <- to_categorical(y_train_local, num_classes = 10) \ny_test_local <- to_categorical(y_test_local, num_classes = 10) \n\nhead(y_train_local)","metadata":{"execution":{"iopub.status.busy":"2022-08-23T17:43:13.810976Z","iopub.execute_input":"2022-08-23T17:43:13.812240Z","iopub.status.idle":"2022-08-23T17:43:14.069040Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"img_rows <- 28\nimg_cols <- 28\ninput_shape = c(img_rows, img_cols, 1)\nx_train_local_cnn <- array_reshape(x = x_train_local,\n                                  dim = c(nrow(x_train_local),input_shape))\n\nx_test_local_cnn <- array_reshape(x = x_test_local,\n                                  dim = c(nrow(x_test_local), img_rows, img_cols, 1))\n\n","metadata":{"execution":{"iopub.status.busy":"2022-08-23T17:43:14.071261Z","iopub.execute_input":"2022-08-23T17:43:14.072532Z","iopub.status.idle":"2022-08-23T17:43:14.733895Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"dim(x_train_local_cnn)","metadata":{"execution":{"iopub.status.busy":"2022-08-23T17:43:14.736612Z","iopub.execute_input":"2022-08-23T17:43:14.738065Z","iopub.status.idle":"2022-08-23T17:43:14.753871Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"cnn_model_1 <- keras_model_sequential() %>%\n    layer_conv_2d(filter = 64, kernel_size = c(3, 3), activation = 'relu', input_shape = input_shape) %>%\n    layer_max_pooling_2d(c(2, 2))  %>%\n    layer_conv_2d(filter = 32, kernel_size = c(2, 2), activation = 'relu') %>%\n    layer_max_pooling_2d(c(2, 2))  %>%\n    layer_flatten() %>%\n    layer_dense(units = 10, activation = 'softmax') \n\nsummary(cnn_model_1)","metadata":{"execution":{"iopub.status.busy":"2022-08-23T17:43:14.756433Z","iopub.execute_input":"2022-08-23T17:43:14.757906Z","iopub.status.idle":"2022-08-23T17:43:14.845895Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Compilar\ncnn_model_1 %>% compile(\n    loss = loss_categorical_crossentropy,\n    optimizer = optimizer_adam(),\n    metrics = c('accuracy')\n)\n\n# Treinamento\n\ncnn_model_1_hist <-  cnn_model_1 %>% \n    fit(\n        x = x_train_local_cnn,\n        y = y_train_local,\n        batch_size =  16,\n        epochs = 5,\n        validation_split = 0.10\n    )\n\n","metadata":{"execution":{"iopub.status.busy":"2022-08-23T17:43:14.848224Z","iopub.execute_input":"2022-08-23T17:43:14.849620Z","iopub.status.idle":"2022-08-23T17:45:14.057895Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plot(cnn_model_1_hist)","metadata":{"execution":{"iopub.status.busy":"2022-08-23T17:45:14.061719Z","iopub.execute_input":"2022-08-23T17:45:14.064167Z","iopub.status.idle":"2022-08-23T17:45:14.394520Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"score_cnn_1 <- cnn_model_1 %>% evaluate(x_test_local_cnn, y_test_local)\n\ncat('Test loss:', score_cnn_1['loss'], '\\n')\ncat('Test accuracy:', score_cnn_1['accuracy'], '\\n')\n\n","metadata":{"execution":{"iopub.status.busy":"2022-08-23T17:45:14.396819Z","iopub.execute_input":"2022-08-23T17:45:14.398121Z","iopub.status.idle":"2022-08-23T17:45:15.165733Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"**Retreinando Modelo**","metadata":{}},{"cell_type":"code","source":"x_train <- train %>% \n    select(-label, -flag) %>% as.matrix()\n\nx_train <- x_train/255\n\nx_train_cnn <- array_reshape(x = x_train, dim = c(nrow(x_train), input_shape))\n\ny_train <- train %>% select(label) %>% as.matrix() %>% to_categorical(num_classes = 10)\n\n\n# Treinamento\n\ncnn_model_1_hist <-  cnn_model_1 %>% \n    fit(\n        x = x_train_cnn,\n        y = y_train,\n        batch_size =  16,\n        epochs = 5\n    )\n\n\nplot(cnn_model_1_hist)","metadata":{"execution":{"iopub.status.busy":"2022-08-23T17:45:15.168185Z","iopub.execute_input":"2022-08-23T17:45:15.169560Z","iopub.status.idle":"2022-08-23T17:47:44.098920Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":" **Criando Arquivo para Submissão**","metadata":{}},{"cell_type":"code","source":"x_test <- test %>% as.matrix()\nx_test <- x_test/255\nx_test_cnn <- array_reshape(x = x_test, dim = c(nrow(x_test), input_shape))\n\ny_test_predicted <- predict(cnn_model_1, x_test_cnn)\n\nhead(round(y_test_predicted), 3)\n\ndim(y_test_predicted)\n\nsubmission <- submission %>% \n    mutate(Label = as.numeric((y_test_predicted > .9) %*% c(0:9))) \n\n\nhead(submission)\n\nwrite_csv(submission, \"submission.csv\", append = FALSE)","metadata":{"execution":{"iopub.status.busy":"2022-08-23T17:47:44.102732Z","iopub.execute_input":"2022-08-23T17:47:44.105015Z","iopub.status.idle":"2022-08-23T17:47:49.465337Z"},"trusted":true},"execution_count":null,"outputs":[]}]}