# You can write R code here and then click "Run" to run it on our platform

library(readr)

# The competition datafiles are in the directory ../input
# Read competition data files:
train <- read_csv("../input/train.csv")
# test <- read_csv("../input/test.csv")

# Write to the log:
cat(sprintf("Training set has %d rows and %d columns\n", nrow(train), ncol(train)))
# cat(sprintf("Test set has %d rows and %d columns\n", nrow(test), ncol(test)))

# Generate output files with write_csv(), plot() or ggplot()
# Any files you write to the current directory get shown as outputs

# picking some cases and factoring label
library(dplyr)
set.seed(2)
train <- sample_n(train, 42000)
train$label <- as.factor(train$label)


# train GBM
library(caret)
set.seed(2)
# fit_gbm <- train(label ~., data = train, method = "gbm", tuneGrid = expand.grid(n.trees = 200, interaction.depth = 2, shrinkage = 0.1, n.minobsinnode = 10), verbose = FALSE, trControl = trainControl(method = "cv", number = 2))
# fit_gbm

# train RF
# fit_gbm <- train(label ~., data = train, method = "rf", tuneGrid = expand.grid(mtry = 300), trControl = trainControl(method = "cv", number = 2))
# fit_gbm

# train SVM
fit_gbm <- train(label ~., data = train, method = "svmPoly", tuneGrid = expand.grid(degree = 2, scale = c(0.001, 0.01), C = 0.25), trControl = trainControl(method = "cv", number = 2))
fit_gbm


# rm train because of space
rm(train)

# testing
test <- read_csv("../input/test.csv")
cat(sprintf("Test set has %d rows and %d columns\n", nrow(test), ncol(test)))


# predict
sub <- data.frame(ImageId = 1:nrow(test), Label = predict(fit_gbm, test))

# write file
write_csv(sub, "digit1.csv")
