library(data.table)
library(h2o)
library(lubridate)
library(dplyr)
library(h2o4gpu)

train_sample <- fread("train_sample.csv")

tr_col <- colnames(train_sample)[1:8]

train <- fread("train.csv",skip = 235654, nrows = 10000000)
colnames(train) <- tr_col

train$attributed_time <- NULL
train_sample$attributed_time <- NULL



# test <- fread("test.csv",header = TRUE,
#               select =c("ip", "app", "device", "os", "channel",
#                         "click_time", "is_attributed"))
# sample_sub <- fread('sample_submission.csv')
# str(train)
# str(test)

# train$is_train <- 1
# test$is_train <- 0

# train_sample[,click_time:=  as.POSIXct(train_sample$click_time, format="%Y-%m-%d %H:%M:%S")]
# train[,click_time:=  as.POSIXct(train$click_time, format="%Y-%m-%d %H:%M:%S")]
# test[,click_time:=  as.POSIXct(test$click_time, format="%Y-%m-%d %H:%M:%S")]

#replace train_sample with train

train_sample <- train_sample %>% mutate(days = day(click_time),hrs = hour(click_time),wday = wday(click_time), wend = ifelse(chron::is.weekend(click_time),1,0)) %>%
  add_count(ip,days,hrs) %>% rename("nip_days_hrs"=n) %>%
  add_count(ip,hrs,os) %>% rename("nip_hrs_os"=n) %>%
  add_count(ip,hrs,channel) %>% rename("nip_hrs_channel"=n) %>%
  add_count(ip,hrs,app) %>% rename("nip_hrs_app"=n) %>%
  add_count(ip,hrs,device) %>% rename("nip_hrs_device"=n) %>%
  add_count(ip,wend,device) %>% rename("nip_wend_device"=n) %>%
  add_count(ip,wend,app) %>% rename("nip_wend_app"=n) %>%
  add_count(ip,wend,channel) %>% rename("nip_wend_channel"=n) %>%
  add_count(ip,wend,os) %>% rename("nip_wend_os"=n)

# train_sample <- train_sample %>% mutate(app = as.numeric(app), device=as.numeric(device), os= as.numeric(os), channel=as.numeric(channel))
# str(train_sample)
train_sample$is_attributed <- as.factor(train_sample$is_attributed)

# train <- train %>% mutate(days = day(click_time),hrs = hour(click_time),wday = wday(click_time), wend = ifelse(chron::is.weekend(click_time),1,0)) %>%
#   add_count(ip,days,hrs) %>% rename("nip_days_hrs"=n) %>%
#   add_count(ip,hrs,os) %>% rename("nip_hrs_os"=n) %>%
#   add_count(ip,hrs,channel) %>% rename("nip_hrs_channel"=n) %>%
#   add_count(ip,hrs,app) %>% rename("nip_hrs_app"=n) %>%
#   add_count(ip,hrs,device) %>% rename("nip_hrs_device"=n) %>%
#   add_count(ip,wend,device) %>% rename("nip_wend_device"=n) %>%
#   add_count(ip,wend,app) %>% rename("nip_wend_app"=n) %>%
#   add_count(ip,wend,channel) %>% rename("nip_wend_channel"=n) %>%
#   add_count(ip,wend,os) %>% rename("nip_wend_os"=n)
# 
# train <- train %>% mutate(app = as.numeric(app), device=as.numeric(device), os= as.numeric(os), channel=as.numeric(channel))
# str(train)
# train$is_attributed <- as.factor(train$is_attributed)
# 
# test <- test %>% mutate(days = day(click_time),hrs = hour(click_time),wday = wday(click_time), wend = ifelse(chron::is.weekend(click_time),1,0)) %>%
#   add_count(ip,days,hrs) %>% rename("nip_days_hrs"=n) %>%
#   add_count(ip,hrs,os) %>% rename("nip_hrs_os"=n) %>%
#   add_count(ip,hrs,channel) %>% rename("nip_hrs_channel"=n) %>%
#   add_count(ip,hrs,app) %>% rename("nip_hrs_app"=n) %>%
#   add_count(ip,hrs,device) %>% rename("nip_hrs_device"=n) %>%
#   add_count(ip,wend,device) %>% rename("nip_wend_device"=n) %>%
#   add_count(ip,wend,app) %>% rename("nip_wend_app"=n) %>%
#   add_count(ip,wend,channel) %>% rename("nip_wend_channel"=n) %>%
#   add_count(ip,wend,os) %>% rename("nip_wend_os"=n)
# 
# test <- test %>% mutate(app = as.numeric(app), device=as.numeric(device), os= as.numeric(os), channel=as.numeric(channel))
# str(train)

#Lets look into some visualization

# summary(train_sample)

# train_sample %>% summarise(channel)

h2o.init()

# X <- colnames(test)[c(2:5,7:15)]
# y <- 'is_attributed'

# xx <- train[,X]
# yy <- as.numeric(train$is_attributed)-1

# h2o.init()

# xtr <- as.h2o(train[,-c(6)])
# xva <- as.h2o(train_sample[,-c(6)])
# xte <- as.h2o(test[,-c(6)])

# almname <- paste('ak_h2o_automl',format(Sys.time(),"%d%H%M%S"),sep = '_')
# automl <- h2o.automl(X,y,training_frame = xtr,validation_frame = xva,nfolds = 5,stopping_metric = "AUC",
#                      project_name = almname, seed = 123,max_runtime_secs = 3600)
# save(automl,file="automl_0941.rda")
# automl

# validpred <- h2o.predict(automl,xva)
# valpred <- as.vector(validpred$p1)
# table(valpred,train_sample$is_attributed)

# testpred <- h2o.predict(automl,xte)
# testPred_p1 <- as.vector(testpred$p1)

# submission <- data.frame(click_id=sample_sub$click_id, is_attributed=testPred_p1)
# filename <- paste('ak_automl_p1',format(Sys.time(),"%Y%m%d%H%M%s"),sep = '_')
# write.csv(submission,paste0(filename,'.csv',collapse = ''),row.names = FALSE)

