{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"library(lightgbm)  \nlibrary(dplyr)\nlibrary(readr)\n\n# ---------------- INITIAL DATA WRANGLING -----------------------------------\n\ntr <- read_csv(\"../input/train.csv\") \nte <- read_csv(\"../input/test.csv\" )\n y <- as.matrix(tr$scalar_coupling_constant)\ntr$scalar_coupling_constant <- NULL\n\ntr_te <- rbind(tr,te) %>% \n  left_join(read_csv(\"../input/structures.csv\"), by = c(\"molecule_name\",\"atom_index_0\" = \"atom_index\")) %>% \n  left_join(read_csv(\"../input/structures.csv\"), by = c(\"molecule_name\",\"atom_index_1\" = \"atom_index\")) %>%\n  mutate(\n    HH = 1*(atom.x ==\"H\" & atom.y ==\"H\"),\n    HC = 1*(atom.x ==\"H\" & atom.y ==\"C\"),\n    HN = 1*(atom.x ==\"H\" & atom.y ==\"N\"),\n    x_dist = x.x - x.y, \n    y_dist = y.x - y.y,  \n    z_dist = z.x - z.y, \n      dist = x_dist^2 + y_dist^2 + z_dist^2) %>% \n  select(-id, -atom.x, -atom.y) \n\ntr_te_type <- tr_te$type\ntypes <- unique(tr_te_type)\n\nrm(tr,te)","execution_count":1,"outputs":[{"output_type":"stream","text":"Loading required package: R6\n\nAttaching package: ‘dplyr’\n\nThe following object is masked from ‘package:lightgbm’:\n\n    slice\n\nThe following objects are masked from ‘package:stats’:\n\n    filter, lag\n\nThe following objects are masked from ‘package:base’:\n\n    intersect, setdiff, setequal, union\n\nParsed with column specification:\ncols(\n  id = \u001b[32mcol_double()\u001b[39m,\n  molecule_name = \u001b[31mcol_character()\u001b[39m,\n  atom_index_0 = \u001b[32mcol_double()\u001b[39m,\n  atom_index_1 = \u001b[32mcol_double()\u001b[39m,\n  type = \u001b[31mcol_character()\u001b[39m,\n  scalar_coupling_constant = \u001b[32mcol_double()\u001b[39m\n)\nParsed with column specification:\ncols(\n  id = \u001b[32mcol_double()\u001b[39m,\n  molecule_name = \u001b[31mcol_character()\u001b[39m,\n  atom_index_0 = \u001b[32mcol_double()\u001b[39m,\n  atom_index_1 = \u001b[32mcol_double()\u001b[39m,\n  type = \u001b[31mcol_character()\u001b[39m\n)\nParsed with column specification:\ncols(\n  molecule_name = \u001b[31mcol_character()\u001b[39m,\n  atom_index = \u001b[32mcol_double()\u001b[39m,\n  atom = \u001b[31mcol_character()\u001b[39m,\n  x = \u001b[32mcol_double()\u001b[39m,\n  y = \u001b[32mcol_double()\u001b[39m,\n  z = \u001b[32mcol_double()\u001b[39m\n)\nParsed with column specification:\ncols(\n  molecule_name = \u001b[31mcol_character()\u001b[39m,\n  atom_index = \u001b[32mcol_double()\u001b[39m,\n  atom = \u001b[31mcol_character()\u001b[39m,\n  x = \u001b[32mcol_double()\u001b[39m,\n  y = \u001b[32mcol_double()\u001b[39m,\n  z = \u001b[32mcol_double()\u001b[39m\n)\n","name":"stderr"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# ------------------------ INCORPORATE SCALAR_COUPLING_CONTRIBUTIONS ---------- \n\nscc_by_csum_a1_a2 <- read_csv(\"../input/scalar_coupling_contributions.csv\") %>% \n  left_join(read_csv(\"../input/scalar_coupling_contributions.csv\") %>% group_by(molecule_name) %>% summarise(csum = n())) %>% \n  select(-molecule_name) %>% \n  group_by(csum, atom_index_0,atom_index_1,type) %>%\n  summarise_all(funs(mean, sum, .args = list(na.rm = TRUE))   ) \n","execution_count":2,"outputs":[{"output_type":"stream","text":"Parsed with column specification:\ncols(\n  molecule_name = \u001b[31mcol_character()\u001b[39m,\n  atom_index_0 = \u001b[32mcol_double()\u001b[39m,\n  atom_index_1 = \u001b[32mcol_double()\u001b[39m,\n  type = \u001b[31mcol_character()\u001b[39m,\n  fc = \u001b[32mcol_double()\u001b[39m,\n  sd = \u001b[32mcol_double()\u001b[39m,\n  pso = \u001b[32mcol_double()\u001b[39m,\n  dso = \u001b[32mcol_double()\u001b[39m\n)\nParsed with column specification:\ncols(\n  molecule_name = \u001b[31mcol_character()\u001b[39m,\n  atom_index_0 = \u001b[32mcol_double()\u001b[39m,\n  atom_index_1 = \u001b[32mcol_double()\u001b[39m,\n  type = \u001b[31mcol_character()\u001b[39m,\n  fc = \u001b[32mcol_double()\u001b[39m,\n  sd = \u001b[32mcol_double()\u001b[39m,\n  pso = \u001b[32mcol_double()\u001b[39m,\n  dso = \u001b[32mcol_double()\u001b[39m\n)\nJoining, by = \"molecule_name\"\nWarning message:\n“funs() is soft deprecated as of dplyr 0.8.0\nplease use list() instead\n\n  # Before:\n  funs(name = f(.))\n\n  # After: \n  list(name = ~ f(.))\n\u001b[90mThis warning is displayed once per session.\u001b[39m”","name":"stderr"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# -------------------------- GET MOMENTS ---------- \n\ntr_te_by_mol <- tr_te  %>% \n  select(-type) %>% \n  group_by(molecule_name) %>%\n  summarise_all(funs( mean, sum,  .args = list(na.rm = TRUE)) ) \n\ndist_by_type <- tr_te %>% \n  left_join(\n    tr_te %>% \n      group_by(type) %>% \n      summarise(dist_type = mean(dist)\n      ), by = \"type\") %>% \n  mutate(\n    dist_dif = dist_type - dist,\n    dist_resid = lm(dist~., tr_te %>% select(-x.y, -molecule_name)) %>% resid()\n  )\n \ntr_te <- tr_te %>% \n  left_join(tr_te %>% group_by(molecule_name) %>% summarise(csum = n())) %>% \n  left_join(scc_by_csum_a1_a2) %>%  \n  left_join(tr_te_by_mol) %>% \n  left_join(dist_by_type) %>% \n  mutate(C1 = 1*(type == \"1JHC\"),\n         N1 = 1*(type == \"1JHN\"), \n         C2 = 1*(type == \"2JHC\"), \n         H2 = 1*(type == \"2JHH\"), \n         N2 = 1*(type == \"2JHN\"),\n         C3 = 1*(type == \"3JHC\"), \n         H3 = 1*(type == \"3JHH\"), \n         N3 = 1*(type == \"3JHN\")) %>% \n  select(-molecule_name, -type) \n \nrm(scc_by_csum_a1_a2,tr_te_by_mol,dist_type)","execution_count":3,"outputs":[{"output_type":"stream","text":"Joining, by = \"molecule_name\"\nJoining, by = c(\"atom_index_0\", \"atom_index_1\", \"type\", \"csum\")\nJoining, by = \"molecule_name\"\nJoining, by = c(\"molecule_name\", \"atom_index_0\", \"atom_index_1\", \"type\", \"x.x\", \"y.x\", \"z.x\", \"x.y\", \"y.y\", \"z.y\", \"HH\", \"HC\", \"HN\", \"x_dist\", \"y_dist\", \"z_dist\", \"dist\")\nWarning message in rm(scc_by_csum_a1_a2, tr_te_by_mol, dist_type):\n“object 'dist_type' not found”","name":"stderr"}]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"#---------------- Light GBM -----------\n# idea  from this kernel: https://www.kaggle.com/artgor/molecular-properties-eda-and-models\n# rcode from this kernel: https://www.kaggle.com/kirichenko17roman/simple-lightgbm-in-r\n \nparams <- list(learning_rate = 0.2,\n               boosting_type = 'gbdt',\n               objective = \"regression\",\n               metric = 'mae',\n               nthread = 8,\n               sub_feature = 1,\n               bagging_fraction = 0.85,\n               bagging_freq = 1,\n               num_leaves = 128, \n               min_split_gain = 0.01,\n               min_data = 50,\n               reg_alpha = 0.13,\n               reg_lambda = 0.36,\n               min_hessian = 0.001)\n\n#--------------\n \ntri <- 1:4658147 \npred_lgb <- as.matrix(0*(data.frame(read_csv(\"../input/sample_submission.csv\") [,1])))\n \ntr_te <- tr_te %>% \n  select(-C1,-N1,-C2,-H2,-N2,-C3,-H3,-N3) \n\nfor (i in 1:8){\n\n  print(i)\n  tr_type <- (tr_te_type[ tri] == types[i]) \n  te_type <- (tr_te_type[-tri] == types[i])\n  nrounds <- round(sum(1*(tr_type==TRUE))/100)\n  ltrain1 <- lgb.Dataset(data = tr_te[ tri, ][tr_type,] %>% select_if(is.numeric) %>% data.matrix() , label = y[tr_type,] )  \n  ltest1  <-                    tr_te[-tri, ][te_type,] %>% select_if(is.numeric) %>% data.matrix()   \n  \n#lgb_cv_oc = lgb.cv(params = params, ltrain, nrounds = 10000, early_stopping_rounds = 50, nfold = 5,  \n#                   categorical_feature = c(\"atom_index_0\", \"atom_index_1\", \"atom.x\", \"atom.y\"))\n\nlgb_train_oc = lgb.train(params = params, ltrain1, nrounds = nrounds, categorical_feature = c( \"atom_index_0\", \"atom_index_1\"))\npred_lgb[te_type==T] = predict(lgb_train_oc,ltest1 )\n\n}\n\n","execution_count":4,"outputs":[{"output_type":"stream","text":"Parsed with column specification:\ncols(\n  id = \u001b[32mcol_double()\u001b[39m,\n  scalar_coupling_constant = \u001b[32mcol_double()\u001b[39m\n)\n","name":"stderr"},{"output_type":"stream","text":"[1] 1\n[1] 2\n[1] 3\n[1] 4\n[1] 5\n[1] 6\n[1] 7\n[1] 8\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"# -------------------------- SAVE SUBMISSION ---------- \n\nread_csv(\"../input/sample_submission.csv\") %>%  \n  mutate(scalar_coupling_constant = pred_lgb) %>%\n  write_csv(\"subm_te_pred_light_gbm.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}