#################
## Set up Cluster (H2O is a Java ML Platform, with R/Python/Web/Java APIs)
#################
print(paste("Set up Cluster",Sys.time()))
library(h2o) # R API is just a library
library(ggplot2) # Data visualization
library(readr) # CSV file I/O, e.g. the read_csv function
library(data.table)
library(Metrics)
library(dplyr)
library(knitr)
## start a cluster; default is 2 cores for CRAN reasons; -1 = all
h2o.init(nthreads=-1,max_mem_size='7G')  

#############
## Load Data 
#############
print(paste("Load Data",Sys.time()))
train = fread("../input/train.csv", 
              select = c("Semana", "Agencia_ID", "Canal_ID", "Ruta_SAK", "Cliente_ID", "Producto_ID", "Demanda_uni_equil"))

#################
## Partition Data
#################
#print(paste("Partition Data",Sys.time()))
sample_idx1 <- sample(nrow(train), nrow(train)*0.4)
sample_data <- train[sample_idx1, ]

sample_idx <- sample(nrow(sample_data), nrow(sample_data)*0.7)
#data to h2o cluster
train.h2o <- as.h2o(sample_data[sample_idx, ])
test.h2o <- as.h2o(sample_data[-sample_idx, ])

train.h2o$target <- log(train.h2o$Demanda_uni_equil+1)
groups <- h2o.group_by(data=train.h2o,by="Producto_ID",mean("target"))
groups

##Create GBM
#rforest_model <- h2o.randomForest(y=7, x=c(1:6), training_frame = train.h2o, ntrees = 2, max_depth = 4, seed = 1122)
#gbm_model <- h2o.gbm(y=8, x=c(1:6), training_frame = train.h2o, ntrees = 1000, max_depth = 4, learn_rate = 0.01, seed = 1122)

## look at model diagnostics
#summary(gbm_model)
