{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"library(keras)\nlibrary(tidyverse)\n\ndf_train <- read.csv(\"../input/digit-recognizer/train.csv\")\ndf_test <- read.csv(\"../input/digit-recognizer/test.csv\")\nhead(df_train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"library(rsample)\nset.seed(100)\n\nindex <- initial_split(df_train, 0.8, strata = \"label\")\n\ndata_train <- training(index)\ndata_test <- testing(index)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_matrix <- data.matrix(df_train)\ntest_matrix <- data.matrix(df_test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_x <- train_matrix[ , -1]\ntrain_y <- train_matrix[ , 1]\n\ntest_x <- test_matrix[ , -1]\ntest_y <- test_matrix[ , 1]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_x_array <- array_reshape(train_x, dim(train_x))\ntest_x_array <- array_reshape(test_x, dim(test_x))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_x.keras <- train_x_array/255\ntest_x.keras <- test_x_array/255\n\ntrain_y.keras <- to_categorical(train_y, 10)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"set.seed(100)\ninitializer <- initializer_random_normal(seed = 100)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model_init %>% \n  compile(loss = \"categorical_crossentropy\", \n          optimizer = optimizer_adam(lr = 0.001), \n          metrics = \"accuracy\")\n\nset.seed(100)\nhistory_init <- model_init %>%\n  fit(train_x.keras, train_y.keras, epochs = 10, batch_size = 100)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plot(history_init)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"pred_init <- predict_classes(object = model_init, x= test_x.keras)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"head(pred_init)\nhead(test_y)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"library(caret)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# model 1\npred_init <- factor(pred_init, levels = 0:9)\ntest_y_fact <- factor(test_y, levels = 0:9)\nconfusionMatrix(pred_init, test_y_fact)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Model Big"},{"metadata":{"trusted":true},"cell_type":"code","source":"model_big <- keras_model_sequential() %>% \n  layer_dense(units = 512, activation = \"relu\", input_shape = c(784)) %>% \n  layer_dense(units = 512, activation = \"relu\") %>% \n  layer_dense(units = 10, activation = \"softmax\")\n\nmodel_big","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model_big %>% \n  compile(loss = \"categorical_crossentropy\", \n          optimizer = optimizer_sgd(lr = 0.001), \n          metrics = \"accuracy\")\n\nset.seed(100)\nhistory_big <- model_big %>%\n  fit(train_x.keras, train_y.keras, epochs = 10, batch_size = 100,\n     validation_split = 0.1)\n\nplot(history_big)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"pred_big <- predict_classes(object = model_big, x= test_x.keras)\n\n# model 1\npred_big <- factor(pred_big, levels = 0:9)\ntest_y_fact <- factor(test_y, levels = 0:9)\nconfusionMatrix(pred_big, test_y_fact)","execution_count":null,"outputs":[]}],"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":4,"nbformat_minor":4}