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)

h2o.init(nthreads=-1,max_mem_size='8G')  


train = fread("../input/train.csv", select = c( "Producto_ID", "Demanda_uni_equil"),
    colClasses=c(Producto_ID="numeric",Demanda_uni_equil="numeric"))

sample_idx <- sample(nrow(train), nrow(train)*0.6)
sample_one <- train[sample_idx, ]
sample_two <- train[-sample_idx, ]

rm(train, sample_idx)



attach(sample_one)
#attach(train)
median <- sample_one[, median(Demanda_uni_equil)]

group <- sample_one[, median(Demanda_uni_equil),by = .(Producto_ID)]
setnames(group,"V1","median_demand")
detach(sample_one)
#detach(train)
rm(sample_one)


data_model <- as.h2o(group)
data_model$median_demand[is.na(data_model$median_demand)] <- median

rm(group)

data_train <- as.h2o(sample_two)
joined_data<-h2o.merge(x=data_train,y=data_model,all.x = T)

rm(sample_two)

gbm_model <- h2o.gbm(y=3, x=1, training_frame = joined_data, ntrees = 200, learn_rate = 0.1)

summary(gbm_model)

test<-h2o.uploadFile("../input/test.csv",destination_frame = "test.hex")

predict_data<-h2o.merge(x=test,y=data_model,all.x = T)
predict_data$median_demand[is.na(predict_data$median_demand)] <- median

p<-h2o.predict(gbm_model,predict_data)


submission <- h2o.cbind(test$id,p)
colnames(submission) <- c("id","Demanda_uni_equil")
h2o.exportFile(submission,path="submission.csv") 
