{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"library(tidyverse)\nlibrary(jsonlite)\nlibrary(reshape2)\nlibrary(ggplot2)\nlibrary(scales)\nlibrary(caret)\noptions(warn=-1)\nlibrary(caTools)\nlibrary(Metrics)\nlibrary(h2o)","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"train <- read_csv(\"../input/train.csv\")\ntest <- read_csv(\"../input/test.csv\")\nfullVisitorId = test$fullVisitorId","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"d34d378979df5d5a8d018dc99c53a3b2a0a6ba4c"},"cell_type":"code","source":"ParseJSONColumn <- function(column){\n     str_c(\"[ \", str_c(column, collapse = \",\", sep=\" \"), \" ]\")  %>% \n     fromJSON(flatten = T) %>% as.tibble()}\n\nParseJSONDataset <- function(data){\n    dataset = data  %>% select(trafficSource, totals, geoNetwork, device)  %>% \n    map_dfc(.f = ParseJSONColumn)\n    return(dataset)}\n\ntrain = ParseJSONDataset(train)\ntest = ParseJSONDataset(test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"2a2556063fbcb5b0a9f5f4157601118cb292ddb4"},"cell_type":"code","source":"ParseColumn <-function(data){\n    #converts selected columns to factor\n    factor_cols <- c(\"campaign\", \"source\", \"medium\",\"keyword\",\n                    \"referralPath\",\"continent\", \"subContinent\", \"country\",\n                    \"browser\", \"operatingSystem\",\"deviceCategory\")\n    data[, factor_cols] <- lapply(data[, factor_cols], as.factor)\n\n    #converting selected columns to numeric\n    num_cols <- c(\"visits\", \"hits\",\n                  \"bounces\", \"pageviews\", \"newVisits\")\n    data[, num_cols] <- lapply(data[, num_cols], as.numeric)\n\n    return(data)}\n\ntrain = ParseColumn(train)\ntest = ParseColumn(test)\n#converting transactionRevenue to Log\ntrain['transactionRevenue'] = as.numeric(unlist(train['transactionRevenue']))\ntrain['log_transactionRevenue'] = log(unlist(train['transactionRevenue']))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"6d84a8b5251b7cb0474d6ee72fed46ef58c74221"},"cell_type":"code","source":"str(train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a7faa23755d7d3e05563102025f1441610e2f92d"},"cell_type":"code","source":"paste(\"Rows:\",dim(train)[1],\", Variables:\",dim(train)[2])\nnames(train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a21d99fb3ab593dbd0f0ff9fc6f0386043adae23"},"cell_type":"code","source":"train = train %>% select(-transactionRevenue)\ntrain$log_transactionRevenue[is.na(train$log_transactionRevenue)] <- 0\ndim(train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"814e114026e8a33893f10e68db94b998c805ff3c"},"cell_type":"code","source":"cols = c('medium','deviceCategory','continent','subContinent','isMobile','pageviews','log_transactionRevenue')\nsample_train = train[,cols]\nsample_train$pageviews[is.na(sample_train$pageviews)] <- 0\nsample_train$log_transactionRevenue[is.na(sample_train$log_transactionRevenue)] <- 0\ndim(sample_train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"d704ec45f4a571d0c147af63daa157e8622c3cce"},"cell_type":"code","source":"set.seed(2) \nsample = sample.split(sample_train$log_transactionRevenue, SplitRatio = .8)\n\nsub_train = subset(sample_train, sample == TRUE)\nsub_test  = subset(sample_train, sample == FALSE)\n\nX_test <- sub_test %>% select(-log_transactionRevenue)\ny_test <- sub_test %>% select(log_transactionRevenue)\npaste('training set rows: ',dim(sub_train)[1])\npaste('test set rows: ',dim(sub_test)[1])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1e30ed3e3af49c1f818a43ec411e985bda257954"},"cell_type":"code","source":"h2o.init(nthreads=-1,max_mem_size='10G')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"010123a8c83a7364e9e2d4c0d115cf941e719bfc"},"cell_type":"code","source":"sub_train = as.h2o(sub_train)\nX_test = as.h2o(X_test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"d9e569d7fe8684bf29290c8d9879acb53674fb10"},"cell_type":"code","source":"#system.time(\n #            RF_model <- h2o.deeplearning(x=c('medium','deviceCategory','continent','subContinent','isMobile','pageviews'),\n  #                          y='log_transactionRevenue',\n   #          training_frame = sub_train,\n    #         epoch = 100,\n     #        hidden = c(150,150),\n      #       activation = \"Rectifier\",\n       #      seed = 1122\n        #     )\n#)\n\n\nRF_model <- h2o.deeplearning(x=c('medium','deviceCategory','continent','subContinent','isMobile','pageviews'),\n                            y='log_transactionRevenue',\n             training_frame = sub_train,      \n                                     \n                             ,standardize = T        \n                             ,model_id = \"deep_model\"        \n                             ,activation = \"Rectifier\"       \n                             ,epochs = 100       \n                             ,seed = 1       \n                             ,hidden = 5         \n                             ,variable_importances = T)\n\nh2o.performance(RF_model,valid = T)\n\n#RF_model = h2o.gbm(x=c('medium','deviceCategory','continent','subContinent','isMobile','pageviews'),\n #                           y='log_transactionRevenue',\n  #                          training_frame=sub_train,\n   #                         ntrees = 1000,\n    #                       \n     #                       max_depth = 4,\n      #                      learn_rate = 0.01\n                            \n       #                     )\nh2o.performance(RF_model)\n#summary(RF_model)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"8b2919daf61dc2d1fa0b555c9e4dff2cdea90d63"},"cell_type":"code","source":"h2o.performance (RF_model)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"17ec6677472e294407d7d86d9e3bc5766b7b3583"},"cell_type":"code","source":"RF_preds = as.data.frame(h2o.predict(RF_model,X_test))\nrmse(y_test,RF_preds)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1e15ca2d0453bf75d4940e9765fa8b52d1eb002c"},"cell_type":"code","source":"cols = c('medium','deviceCategory','continent','subContinent','isMobile','pageviews')\nsample_test = test[,cols]\nsample_test = as.h2o(sample_test)\npreds = as.data.frame(h2o.predict(RF_model,sample_test))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1a27d64c68bbea3bef146ff89ad255961014aa17"},"cell_type":"code","source":"submission = data.frame(fullVisitorId, preds)\nsubmission = submission  %>% group_by(fullVisitorId)  %>% summarise(PredictedLogRevenue = sum(predict))\nhead(submission)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"4ef1eb87867ca5f492f167d1c8b7753394c9f420"},"cell_type":"code","source":"write.csv(submission,'submission.csv',row.names=FALSE)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"R","language":"R","name":"ir"},"language_info":{"mimetype":"text/x-r-source","name":"R","pygments_lexer":"r","version":"3.4.2","file_extension":".r","codemirror_mode":"r"}},"nbformat":4,"nbformat_minor":1}