{"metadata":{"kernelspec":{"name":"ir","display_name":"R","language":"R"},"language_info":{"name":"R","codemirror_mode":"r","pygments_lexer":"r","mimetype":"text/x-r-source","file_extension":".r","version":"4.0.5"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"suppressPackageStartupMessages(library(data.table)) \nsuppressPackageStartupMessages(library(tidyverse))\nsuppressPackageStartupMessages(library(dtplyr)) \nsuppressPackageStartupMessages(library(arrow))\nsuppressPackageStartupMessages(library(readr))\nsuppressPackageStartupMessages(library(dplyr))\nsuppressPackageStartupMessages(library(xgboost))","metadata":{"_uuid":"051d70d956493feee0c6d64651c6a088724dca2a","_execution_state":"idle","execution":{"iopub.status.busy":"2022-07-15T17:21:47.428637Z","iopub.execute_input":"2022-07-15T17:21:47.430962Z","iopub.status.idle":"2022-07-15T17:21:47.461696Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#pull in training labels\ntrain_Y <- fread(\"../input/amex-default-prediction/train_labels.csv\") %>% as_tibble()","metadata":{"execution":{"iopub.status.busy":"2022-07-15T17:21:47.567141Z","iopub.execute_input":"2022-07-15T17:21:47.569810Z","iopub.status.idle":"2022-07-15T17:21:48.456910Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df <- \n    arrow::read_parquet(\"../input/amex-data-integer-dtypes-parquet-format/train.parquet\",col_select = 1:190) %>% \n    mutate(S_2 = lubridate::ymd(S_2)) %>%\n    group_by(customer_ID) %>% \n    slice_max(S_2) %>% \n    ungroup()","metadata":{"execution":{"iopub.status.busy":"2022-07-15T17:21:48.462229Z","iopub.execute_input":"2022-07-15T17:21:48.464295Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"write_rds(train_df,\"train_df.rds\")","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#train_df<-read_rds(\"train_df.rds\")","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"names_train_df<-names(train_df)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#attach training labels to training data\ntrain_df <- left_join(train_Y,train_df,by=c(\"customer_ID\"))\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df<-train_df%>%select(which(colSums(is.na(train_df))<70000))\ntrain_df<-train_df%>%select(-S_2,-customer_ID)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"gc()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df<-train_df %>% mutate_all(~ifelse(is.na(.), median(., na.rm = TRUE), .))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df_variables<-names(train_df)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"length(train_df_variables)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"set.seed(77) \npartition <- caret::createDataPartition(y=train_df$target, p=.80, list=FALSE) \ntrain_df_part <- train_df[partition,]\nvalid_df_part<-train_df[-partition,]","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_X_part<-as.matrix(subset(train_df_part,select=-c(target)))\ntrain_Y_part<-train_df_part$target","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"valid_X_part<-as.matrix(subset(valid_df_part,select=-c(target)))\nvalid_Y_part<-valid_df_part$target","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Transform the two data sets into xgb.Matrix\nxgb.train = xgb.DMatrix(data=train_X_part,label=train_Y_part)\nxgb.valid = xgb.DMatrix(data=valid_X_part,label=valid_Y_part)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"remotes::install_github(\"igjit/amexmetric\", quiet = TRUE)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"amex_metric_lgb <- function(y_pred, dtrain) {\n  y_true <- getinfo(dtrain, \"label\")\n  amex_metric_val <- amexmetric::amex_metric(y_true, y_pred)\n  return(list(name=\"AMEX metric\", \n              value=amex_metric_val,\n              higher_better=TRUE))\n}","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"params = list(\n    booster=\"gblinear\",\n    lambda=0,\n    alpha=0,\n    eta=0.03,\n    objective=\"binary:logistic\",\n    eval_metric=amex_metric_lgb\n)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"gc()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Train the XGBoost classifer\nxgb.fit=xgb.train(\n  params=params,\n  data=xgb.train,\n  nrounds=10000,\n  early_stopping_rounds=100,\n  verbose=0,\n    watchlist=list(val1=xgb.train,val2=xgb.valid),\n    maximize=TRUE\n)\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"xgb.fit","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"rm(xgb.train,xgb.valid,valid_df_part,train_df_part,train_X_part,train_Y_part,valid_X_part,valid_Y_part)\ngc()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_X1 <- \n    arrow::read_parquet(\"../input/amex-data-integer-dtypes-parquet-format/test.parquet\", col_select =c('customer_ID','S_2',train_df_variables[! train_df_variables %in% c('target')][1:60])) %>% \n    mutate(S_2 = lubridate::ymd(S_2)) %>%\n    group_by(customer_ID) %>% \n    slice_max(S_2) %>% \n    ungroup()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"write_rds(test_X1,\"test_X1.rds\")","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"rm(test_X1)\ngc()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"length(train_df_variables)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_X2 <- \n    arrow::read_parquet(\"../input/amex-data-integer-dtypes-parquet-format/test.parquet\", col_select =c('customer_ID','S_2',train_df_variables[! train_df_variables %in% c('target')][61:120])) %>% \n    mutate(S_2 = lubridate::ymd(S_2)) %>%\n    group_by(customer_ID) %>% \n    slice_max(S_2) %>% \n    ungroup()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"write_rds(test_X2,\"test_X2.rds\")","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_X2<-subset(test_X2,select=-c(customer_ID,S_2))\nwrite_rds(test_X2,\"test_X2.rds\")","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"rm(test_X2)\ngc()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_X3 <- \n    arrow::read_parquet(\"../input/amex-data-integer-dtypes-parquet-format/test.parquet\", col_select =c('customer_ID','S_2',train_df_variables[! train_df_variables %in% c('target')][121:165])) %>% \n    mutate(S_2 = lubridate::ymd(S_2)) %>%\n    group_by(customer_ID) %>% \n    slice_max(S_2) %>% \n    ungroup()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_X3<-subset(test_X3,select=-c(customer_ID,S_2))\nwrite_rds(test_X3,\"test_X3.rds\")","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_X1<-read_rds(\"test_X1.rds\")\ntest_X2<-read_rds(\"test_X2.rds\")\ntest_X3<-read_rds(\"test_X3.rds\")","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_X<-cbind(test_X1,test_X2,test_X3)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"head(test_X)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"gc()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_X<-test_X %>% mutate_all(~ifelse(is.na(.), median(., na.rm = TRUE), .))\ntest_X<-test_X%>%select(-S_2,-customer_ID)\ntest_X<-as.matrix(test_X)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"rm(test_X1,test_X2,test_X3)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"prediction<-predict(xgb.fit,test_X)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"head(prediction)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sample_submission<- fread(\"../input/amex-default-prediction/sample_submission.csv\") %>% as_tibble()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sample_submission$prediction<-prediction","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"fwrite(x=sample_submission, file=\"submission.csv\")","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}