{"cells":[{"metadata":{"_execution_state":"idle","_uuid":"f4dd6e12aac95b45c3fa000c639bb04896d6ab61","trusted":false,"_cell_guid":"365c4758-0d27-435b-80bf-db3991d17c9f"},"cell_type":"code","source":"library(dplyr)\nlibrary(readr)\nlibrary(ggplot2)\nlibrary(catboost)\nlibrary(CatEncoders)\nlibrary(tibble)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"adb09a9cf1cc33d49f0a2e1dd858e1fc75e3a30d","trusted":false,"_cell_guid":"5783c1a5-31d5-467a-9f6b-573a7cbef003"},"cell_type":"code","source":"# read files\ntrain <- read_csv(\"../input/train.csv\")\ntest <- read_csv('../input/test.csv')\ntarget <- train$deal_probability\ntrain$deal_probability <- NULL\nall_data <- bind_rows(train, test)\n# convert Date\nall_data$activation_day <- weekdays(all_data$activation_date)\nstr(all_data)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"0f7cd512acdd75ed78cb4cf92b5c70dc0d02be67","trusted":false,"_cell_guid":"cd4551d6-62b3-4bfe-bb76-7737a8e06296"},"cell_type":"code","source":"# define categorical variables and encode\ncat_clean <- c('region', 'city', 'parent_category_name', 'category_name',\n               'user_type', 'activation_day', 'param_1', 'param_2', 'param_3')\ncat_data <- all_data[cat_clean]\nlenc <- sapply(all_data[cat_clean], function(x) LabelEncoder.fit(x))\nfor (i in cat_clean){\n    cat_data[[i]] <- transform(lenc[[i]], all_data[[i]])\n}\ncat_data <- cbind(cat_data, all_data[c('price', 'item_seq_number', 'image_top_1', 'item_id')])\nstr(cat_data)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"826477934d9575ed9d80e7262b1d05dbf3b9b4b3","trusted":false,"_cell_guid":"88482407-aeed-4ac9-a123-dc9311a1543e"},"cell_type":"code","source":"# create train/test pools from training data\ntrain <- cat_data[1:nrow(train),]\npred_pool <- cat_data[(nrow(train)+1):nrow(cat_data),]  %>% \n    select(-item_id) %>% \n    catboost.load_pool()\n\ntrain <- cbind(train, target)\nX_train <- sample_frac(train, 0.75)\nX_valid <- anti_join(train, X_train, by = 'item_id')\n\ny_train <- unlist(X_train[c('target')])\nX_train <- X_train %>% select(-target, -item_id)\n\ny_valid <- unlist(X_valid[c('target')])\nX_valid <- X_valid %>% select(-target, -item_id)\n\ntrain_pool <- catboost.load_pool(data = X_train, label = y_train)\ntest_pool <- catboost.load_pool(data = X_valid, label = y_valid)\n\n# build model\nparams <- list(iterations=500,\n               learning_rate=0.01,\n               depth=10,\n               loss_function='RMSE',\n               eval_metric='RMSE',\n               random_seed = 55,\n               od_type='Iter',\n               metric_period = 50,\n               od_wait=20,\n               use_best_model=TRUE)\n\nmodel <- catboost.train(train_pool, test_pool, params)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"1d27e686180c18fc2ef55f44715e3020ee25dc8f","trusted":false,"_cell_guid":"96329ef4-4dc8-430f-b79e-c39788ff2272"},"cell_type":"code","source":"# visualize feature importance\nfeat_imp <- as_tibble(catboost.get_feature_importance(model)) %>% \n    rownames_to_column() %>% \n    select(Feature = rowname, Importance = value ) %>% \n    arrange(desc(Importance))\n\nggplot(feat_imp, aes(x = Feature, y = Importance)) +\n    geom_bar(stat='identity') +\n    theme(axis.text.x= element_text(angle = 45)) +\n    scale_x_discrete(limits = feat_imp$Feature)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"5a26b86713318862399c05efde9ff16ae593e9ff","trusted":false,"_cell_guid":"9e52f9a0-38e1-48f0-89a9-bb56db05d5e3"},"cell_type":"code","source":"# correct out of bound values and write file\npreds <- catboost.predict(model, pred_pool)\nsum(preds<0)\npreds[preds<0] = 0\npreds[preds>1] = 1\n\npreds <- data.frame(cbind(test$item_id, preds)) %>% \n    rename(item_id = V1, deal_probability = preds) %>% \n    mutate(item_id = as.character(item_id)) %>% \n    write_csv('submit.csv')","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}