{"cells":[{"metadata":{"_uuid":"5a782b4893b9f9cbea16c820fd35a67f63ecdc6b","_execution_state":"idle","trusted":true,"_kg_hide-output":true,"_kg_hide-input":false},"cell_type":"code","source":"library(tidyverse)\nlibrary(data.table)\nlibrary(ParamHelpers)\nlibrary(mlr)\nlibrary(h2o)\n\ntest <- fread(\"../input/test_V2.csv\")\ntrain <- fread(\"../input/train_V2.csv\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"17e679fd1a9cd804bd740623da8f4c5435955929","_kg_hide-output":true},"cell_type":"code","source":"test <- test[sample(1:nrow(test))]\ntest[,winPlacePerc:= c(0)]\ntestId <- test[,list(Id)]\nonlyOneGroup <- test[,numGroups == 1]\ntrain <- train[sample(1:nrow(train))]\ntrain <- na.omit(train)\n\nadd_features <- function (x){\n    #new features\n    x[    ,killsPerMinute := kills / matchDuration\n        ][,totalDistance := walkDistance + swimDistance + rideDistance\n        ][,speed := totalDistance / matchDuration / 60\n        ][,percentageOfMaxPossibleDistance := totalDistance / (22 * matchDuration / 3600)\n        ][,\":=\"(\n            avgDBNOs = mean(DBNOs), \n            avgAssists = mean(assists), \n            avgBoosts = mean(boosts),\n            avgDamageDealt = mean(damageDealt),\n            avgHeadshotKills = mean(headshotKills),\n            avgHeals = mean(heals),\n            killPlacePercentile = 1 - (killPlace / max(killPlace)),\n            avgKillStreaks = mean(killStreaks),\n            avgKills = mean(kills), \n            avgLongestKill = mean(longestKill),\n            avgRevives = mean(revives),\n            avgWeaponsAcquired = mean(weaponsAcquired),\n            avgSpeed = mean(speed),\n            avgPercentageOfMaxPossibleDistance = mean(percentageOfMaxPossibleDistance)\n        ), by = matchId]\n    \n    #games modes\n    x <- x %>% mutate(\n        isSolo = ifelse(x$matchType=='solo-fpp' | x$matchType=='solo' |\n            x$matchType=='normal-solo-fpp' | x$matchType=='solo' | x$matchType=='normal-solo',1,0),                     \n        isDuo = ifelse(x$matchType=='duo' | x$matchType=='duo-fpp' |\n            x$matchType=='normal-duo-fpp' | x$matchType=='normal-duo' ,1,0),           \n        isSquad = ifelse(x$matchType=='squad-fpp' | x$matchType=='squad' |\n            x$matchType=='normal-squad-fpp' | x$matchType=='normal-squad' ,1,0),\n        isCrash = ifelse(x$matchType=='crashfpp' | x$matchType=='crashtpp',1,0),\n        isFlare = ifelse(x$matchType=='flaretpp' | x$matchType=='flarefpp',1,0))\n}\n\nadd_features(train)\nadd_features(test)\n\ndrop_col <- function (x){\n    x[,c(\"Id\", \"groupId\", \"matchId\", \"matchType\", \"vehicleDestroys\", \n            \"roadKills\", \"teamKills\", \"matchDuration\",\"killPlace\", \n            \"winPoints\", \"rankPoints\"):= NULL]\n}\ndrop_col(test)\ndrop_col(train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"06ecaa528298bfc568dd0f9b0ee42df4ed624eaf","_kg_hide-output":true,"_kg_hide-input":true},"cell_type":"code","source":"if(F){\n    trainTask <- makeRegrTask(data = train,target = \"winPlacePerc\")\n    testTask <- makeRegrTask(data = test,target = \"winPlacePerc\")\n\n    trainTask <- normalizeFeatures(trainTask, method = \"standardize\")\n    testTask <- normalizeFeatures(testTask, method = \"standardize\")\n}","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"71db0bb84313eb3480f9e3d1c281b8200861cef5","_kg_hide-input":true},"cell_type":"code","source":"if(F){\n    getParamSet(\"regr.ksvm\")\n    ksvm <- makeLearner(\"regr.ksvm\",predict.type = \"response\")\n    pssvm <- makeParamSet(\n        makeDiscreteParam(\"C\", values = 2^c(-10, -9,-8,-7)),\n        makeDiscreteParam(\"sigma\", values = 2^c(-10, -9,-8,-7))\n    )\n    ctrl <- makeTuneControlGrid()\n    set_cv <- makeResampleDesc(\"CV\",iters = 3L)\n    res <- tuneParams(ksvm, task = trainTask, resampling = set_cv, par.set = pssvm, control = ctrl)\n    t.svm <- setHyperPars(ksvm, par.vals = res$x)\n    par.svm <- train(ksvm, trainTask)\n    predict.svm <- predict(par.svm, testTask)\n    submitSVM <- data.frame(Id = testId[,Id], winPlacePerc = predict.svm$data$response)\n    write.csv(submitSVM, \"submitSVM.csv\",row.names = F)\n}\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"979a8dd717801eb355d835602f4b1356b0611927","_kg_hide-input":true},"cell_type":"code","source":"if(F){\n    getParamSet(\"regr.xgboost\")\n    xg_set <- makeLearner(\"regr.xgboost\", predict.type = \"response\")\n        xg_set$par.vals <- list(\n        objective = \"reg:linear\",\n        nrounds = 10,\n        print_every_n = 50    \n    )\n    xg_ps <- makeParamSet(\n        makeIntegerParam(\"max_depth\",lower=1,upper=15)\n    )\n    rancontrol <- makeTuneControlRandom(maxit = 20L)\n    set_cv <- makeResampleDesc(\"CV\",iters = 3L)\n    xg_tune <- tuneParams(learner = xg_set, task = trainTask, resampling = set_cv,par.set = xg_ps, control = rancontrol)\n    xg_new <- setHyperPars(learner = xg_set, par.vals = xg_tune$x)\n    xgmodel <- train(xg_new, trainTask)\n    predict.xg <- predict(xgmodel, testTask)\n    submitXGB <- data.frame(Id = testId[,Id], winPlacePerc = predict.xg$data$response)\n    submitXGB <- submitXGB %>% mutate(winPlacePerc = replace(winPlacePerc, onlyOneGroup, 0))\n    write.csv(submitXGB, \"submitXGB.csv\",row.names = F)\n}","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1ab36009e402ca9811a48ab0f6bd46c3cb417872"},"cell_type":"code","source":"h2o.init(nthreads = -1)\ncv <- train[1:400000]\ntrainSet <- train[400000:nrow(train)]\n\n\ntrainTask <- as.h2o(trainSet)\ncvTask <- as.h2o(cv)\ntestTask <- as.h2o(test)\ny <- \"winPlacePerc\"\nx <- setdiff(names(train), y)\ndl_fit1 <- h2o.deeplearning(x = x,\n                            y = y,\n                            training_frame = trainTask,\n                            model_id = \"dl_fit1\",\n                            nfolds = 3,\n                            hidden = c(200, 200),\n                            seed = 1)\n\npredictionsNN <- h2o.predict(dl_fit1, newdata = testTask) %>% as.data.frame()\nsubmitNN <- testId %>% mutate(winPlacePerc = predictionsNN$predict) %>%\n            mutate(winPlacePerc = replace(winPlacePerc, onlyOneGroup, 0))\nwrite.csv(submitNN, \"submitNN.csv\",row.names = F)","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}