{"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":"051d70d956493feee0c6d64651c6a088724dca2a","_execution_state":"idle","execution":{"iopub.status.busy":"2022-08-23T14:18:46.699792Z","iopub.execute_input":"2022-08-23T14:18:46.701256Z","iopub.status.idle":"2022-08-23T14:18:46.718773Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"list.files(path = \"../input/digit-recognizer\")","metadata":{"execution":{"iopub.status.busy":"2022-08-23T14:18:46.720922Z","iopub.execute_input":"2022-08-23T14:18:46.722167Z","iopub.status.idle":"2022-08-23T14:18:46.746746Z"},"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-23T14:18:46.748744Z","iopub.execute_input":"2022-08-23T14:18:46.749962Z","iopub.status.idle":"2022-08-23T14:18:53.378646Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"head(train) \n\ndim(train)\n\nhead(test)\n\ndim(test)\n\nhead(submission)\n\ndim(submission)","metadata":{"execution":{"iopub.status.busy":"2022-08-23T14:18:53.380900Z","iopub.execute_input":"2022-08-23T14:18:53.382206Z","iopub.status.idle":"2022-08-23T14:18:53.582922Z"},"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-23T14:18:53.585211Z","iopub.execute_input":"2022-08-23T14:18:53.586536Z","iopub.status.idle":"2022-08-23T14:18:53.934960Z"},"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)","metadata":{"execution":{"iopub.status.busy":"2022-08-23T14:18:53.938785Z","iopub.execute_input":"2022-08-23T14:18:53.940384Z","iopub.status.idle":"2022-08-23T14:18:54.469045Z"},"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-23T14:18:54.471342Z","iopub.execute_input":"2022-08-23T14:18:54.472657Z","iopub.status.idle":"2022-08-23T14:18:54.678224Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model_1 <- keras_model_sequential()\n\nmodel_1 %>% \n    layer_dense(units = 256, activation = \"relu\", input_shape = 784) %>% \n    layer_dropout(rate = .5) %>%\n    layer_dense(units = 128, activation = \"relu\") %>% \n    layer_dropout(rate = .2) %>%\n    layer_dense(units = 64, activation = \"relu\") %>% \n    layer_dropout(rate = .2) %>%\n    layer_dense(units = 10, activation = \"softmax\")\n\n#Resumo do modelo\nsummary(model_1)\n\n\nmodel_1 %>% compile(\n    loss = 'categorical_crossentropy',\n    optimizer = optimizer_adam(),\n    metrics = c('accuracy')\n)\n\n\n# Treinamento\n\nhistory <- model_1 %>% fit(\n    x_train_local, y_train_local,\n    epochs = 15, # testar com 30\n    batch_size = 16,\n    validation_split = 0.10 \n)\n\nplot(history)","metadata":{"execution":{"iopub.status.busy":"2022-08-23T14:18:54.681695Z","iopub.execute_input":"2022-08-23T14:18:54.683205Z","iopub.status.idle":"2022-08-23T14:20:22.365757Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"score <- model_1 %>% evaluate(x_test_local, y_test_local)\n\ncat('Test loss:', score['loss'], '\\n')\ncat('Test accuracy:', score['accuracy'], '\\n')\n","metadata":{"execution":{"iopub.status.busy":"2022-08-23T14:20:22.368259Z","iopub.execute_input":"2022-08-23T14:20:22.369673Z","iopub.status.idle":"2022-08-23T14:20:22.644736Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x_train <- train %>% \n    select(-label, -flag) %>% as.matrix()\n\n#x_train <- x_train/255\n\n#x_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\nmodel_2 <- keras_model_sequential()\n\nmodel_2 %>% \n    layer_dense(units = 512, activation = \"relu\", input_shape = 784) %>% \n    layer_dropout(rate = .5) %>%\n    layer_dense(units = 256, activation = \"relu\") %>% \n    layer_dropout(rate = .2) %>%\n    layer_dense(units = 128, activation = \"relu\") %>% \n    layer_dropout(rate = .2) %>%\n    layer_dense(units = 64, activation = \"relu\") %>% \n    layer_dropout(rate = .2) %>%\n    layer_dense(units = 10, activation = \"softmax\")\n\n#Resumo do modelo\nsummary(model_2)\n\n\nmodel_2 %>% compile(\n    loss = 'categorical_crossentropy',\n    optimizer = optimizer_adam(),\n    metrics = c('accuracy')\n)\n\n\n\n# Treinamento\n\nmodel_2_hist <-  model_2 %>% \n    fit(\n        x = x_train,\n        y = y_train,\n        batch_size =  16,\n        epochs = 15\n    )\n\n\nplot(model_2_hist)","metadata":{"execution":{"iopub.status.busy":"2022-08-23T14:20:22.647212Z","iopub.execute_input":"2022-08-23T14:20:22.648596Z","iopub.status.idle":"2022-08-23T14:22:43.121777Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x_test <- test %>% as.matrix()\n#x_test <- x_test/255\n#x_test_cnn <- array_reshape(x = x_test, dim = c(nrow(x_test), input_shape))\n\ny_test_predicted <- predict(model_2, x_test)\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-23T14:22:43.124152Z","iopub.execute_input":"2022-08-23T14:22:43.125556Z","iopub.status.idle":"2022-08-23T14:22:45.107397Z"},"trusted":true},"execution_count":null,"outputs":[]}]}