{"cells":[{"metadata":{},"cell_type":"markdown","source":"This R kernel is a mashup of several other R kernels utilizing features from yet other kernels. I am listing this kernel publicly since the latest 'blends' and their endless forkers renders this competition for me at least, now totally a waste of time. I've learned a great deal from others though, so happy to share what I've come up with and considering my total lack of experience in chemistry I guess I've done well.\n\nIf you find this useful, please upvote, and upvote the kernels I reference in the code below. For the FCS fanboys, (Fork, Commit, Submit), sorry you will have to actually do some work to use this kernel further. For the R users in the competition, perhaps there are some interesting ideas here that will be useful. This kernel will score -1.380 on its own, and if you blend can get you over -1.580 easy. My features are not included in this kernel as they are too big to upload, but I show where you can find them in the other kernels I reference."},{"metadata":{"_uuid":"051d70d956493feee0c6d64651c6a088724dca2a","_execution_state":"idle","trusted":false},"cell_type":"code","source":"## Importing packages\n\n# This R environment comes with all of CRAN and many other helpful packages preinstalled.\n# You can see which packages are installed by checking out the kaggle/rstats docker image: \n# https://github.com/kaggle/docker-rstats\n\nlibrary(tidyverse) # metapackage with lots of helpful functions\n\n## Running code\n\n# In a notebook, you can run a single code cell by clicking in the cell and then hitting \n# the blue arrow to the left, or by clicking in the cell and pressing Shift+Enter. In a script, \n# you can run code by highlighting the code you want to run and then clicking the blue arrow\n# at the bottom of this window.\n\n## Reading in files\n\n# You can access files from datasets you've added to this kernel in the \"../input/\" directory.\n# You can see the files added to this kernel by running the code below. \n\nlist.files(path = \"../input\")\n\n## Saving data\n\n# If you save any files or images, these will be put in the \"output\" directory. You \n# can see the output directory by committing and running your kernel (using the \n# Commit & Run button) and then checking out the compiled version of your kernel.","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"The basic structure and framework of this kernel comes from the excellent kernel over here:\nhttps://www.kaggle.com/kublakahn/another-simple-lightgbm-in-r"},{"metadata":{},"cell_type":"markdown","source":"Load the packages we need. Running the same model across both LGB and XGB, and blending the result, often times gave me a significant boost. In the end I stuck with LightGBM as running both took way too long."},{"metadata":{"trusted":true},"cell_type":"code","source":"library(lightgbm)\nlibrary(dplyr)\nlibrary(readr)\nlibrary(e1071)\nlibrary(caret)\nlibrary(Metrics)\nlibrary(mlbench)\nlibrary(data.table)\n\nset.seed(42)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Load and wrangle the basic data sets we've got."},{"metadata":{"trusted":true},"cell_type":"code","source":"tr <- read_csv(\"train.csv\") \nte <- read_csv(\"test.csv\" )\ny <- as.matrix(tr$scalar_coupling_constant)\ntr$scalar_coupling_constant <- NULL\n\ntr<-tr %>% left_join(read_csv(\"train_ob_charges.csv\"), by = c(\"molecule_name\",\"atom_index_0\" = \"atom_index\")) %>% \n  left_join(read_csv(\"train_ob_charges.csv\"), by = c(\"molecule_name\",\"atom_index_1\" = \"atom_index\"))\ntr<-tr %>% select(-X1.x,-X1.y)\n\nte<-te %>% left_join(read_csv(\"test_ob_charges.csv\"), by = c(\"molecule_name\",\"atom_index_0\" = \"atom_index\")) %>% \n  left_join(read_csv(\"test_ob_charges.csv\"), by = c(\"molecule_name\",\"atom_index_1\" = \"atom_index\"))\nte<-te %>% select(-X1.x,-X1.y)\n\ntr_te <- rbind(tr,te) %>% \n  left_join(read_csv(\"structures.csv\"), by = c(\"molecule_name\",\"atom_index_0\" = \"atom_index\")) %>% \n  left_join(read_csv(\"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    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    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)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Summarize as per the original kernel. Note I've added both skewness and kurtosis."},{"metadata":{"trusted":true},"cell_type":"code","source":"tr_te_type <- tr_te$type\ntypes <- unique(tr_te_type)\n\nall_by_mol <- tr_te  %>% \n  select(-type) %>% \n  group_by(molecule_name) %>%\n  summarise_all(funs( mean, sum, sd, .args = list(na.rm = TRUE)) ) \n\nfn = funs(min, mean, max, var, mad, skewness, kurtosis, .args = list(na.rm = TRUE)) \n\ndist_by_atom0 <- tr_te  %>% \n  select(dist, molecule_name, atom_index_0) %>% \n  group_by(molecule_name,atom_index_0) %>%\n  summarise_all(fn) %>% \n  rename(dist_0_min  = min) %>% \n  rename(dist_0_mean = mean) %>% \n  rename(dist_0_var = var) %>% \n  rename(dist_0_mad = mad) %>% \n  rename(dist_0_sk = skewness) %>% \n  rename(dist_0_kr = kurtosis) %>% \n  rename(dist_0_max  = max)\n\ndist_by_atom1 <- tr_te  %>% \n  select(dist, molecule_name, atom_index_1) %>% \n  group_by(molecule_name,atom_index_1) %>%\n  summarise_all(fn)  %>% \n  rename(dist_1_min  = min) %>% \n  rename(dist_1_mean = mean) %>% \n  rename(dist_1_var = var) %>% \n  rename(dist_1_mad = mad) %>%\n  rename(dist_1_sk = skewness) %>% \n  rename(dist_1_kr = kurtosis) %>% \n  rename(dist_1_max  = max)\n\ndist_by_atom0_type <- tr_te  %>% \n  select(dist, molecule_name, atom_index_0,type) %>% \n  group_by(molecule_name,atom_index_0, type) %>%\n  summarise_all(fn) %>% \n  rename(dist_0_min_st  = min) %>% \n  rename(dist_0_mean_st = mean) %>% \n  rename(dist_0_var_st = var) %>% \n  rename(dist_0_mad_st = mad) %>% \n  rename(dist_0_sk_st = skewness) %>% \n  rename(dist_0_kr_st = kurtosis) %>% \n  rename(dist_0_max_st  = max)\n\ndist_by_atom1_type <- tr_te  %>% \n  select(dist, molecule_name, atom_index_1,type) %>% \n  group_by(molecule_name,atom_index_1,type) %>%\n  summarise_all(fn) %>% \n  rename(dist_1_min_st  = min) %>% \n  rename(dist_1_mean_st = mean) %>% \n  rename(dist_1_var_st = var) %>%\n  rename(dist_1_mad_st = mad) %>%\n  rename(dist_1_sk_st = skewness) %>% \n  rename(dist_1_kr_st = kurtosis) %>% \n  rename(dist_1_max_st  = max)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"raw","source":"Incorporate scalar coupling contributions (as per original kernel)"},{"metadata":{"trusted":true},"cell_type":"code","source":"scc_by_csum_a1_a2 <- read_csv(\"scalar_coupling_contributions.csv\") %>% \n  left_join(read_csv(\"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\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(all_by_mol) %>% \n  left_join(dist_by_type) %>% \n  left_join(dist_by_atom0) %>% \n  left_join(dist_by_atom1) %>% \n  left_join(dist_by_atom0_type) %>% \n  left_join(dist_by_atom1_type) %>% \n  select(-molecule_name, -type) \n\nrm(scc_by_csum_a1_a2,all_by_mol,dist_by_type)\nrm(dist_by_atom0,dist_by_atom1,dist_by_atom0_type,dist_by_atom1_type)\n\ntri <- 1:4658147 \n\ntr_te <- tr_te %>% \n  select(-C1,-N1,-C2,-H2,-N2,-C3,-H3,-N3)\n\ngc()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Now incorporate coulomb features from kernel: https://www.kaggle.com/vicensgaitan/blazing-fast-coulomb-interaction-in-r"},{"metadata":{"trusted":true},"cell_type":"code","source":"coulomb <- read_csv(\"coulomb.csv\")\ncoulomb <- coulomb %>% select(-molecule_name, -atom_index_1, -atom_index_0)\ntr_te <- cbind(tr_te, coulomb)\nrm(coulomb)\ngc()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"You want to take a snapshot now, since the code above takes a long time to run."},{"metadata":{"trusted":true},"cell_type":"code","source":"save(tri, tr_te, tr_te_type, types, y, file = \"champs.RData\")\n#load(\"champs.RData\")\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Let's add a whole bunch of useful features from https://www.kaggle.com/jmtest/molecule-with-openbabel and bonds from https://www.kaggle.com/c/champs-scalar-coupling/discussion/96419#latest-557409\n\nIt was quicker for me to run the kernels above and dump the features instead of re-coding it all from scratch in R. This allowed me to test feature sets faster without re-coding."},{"metadata":{"trusted":true},"cell_type":"code","source":"# using features from: https://www.kaggle.com/jmtest/molecule-with-openbabel\ntrain1JHC <- read_csv(\"train1JHC.csv\")\ntrain1JHC <- train1JHC %>% select(molecule_atom_index_0_z_1_std,\n                                  molecule_atom_index_0_x_1_std,\n                                  molecule_atom_index_0_y_1_std,\n                                  molecule_atom_index_0_y_1_mean_div,\n                                  molecule_atom_index_0_dist_max_div,\n                                  molecule_atom_1_dist_mean,\n                                  molecule_atom_index_0_dist_std,\n                                  molecule_atom_index_1_dist_std,\n                                  molecule_couples,\n                                  abs_dist,\n                                  dist_xz,\n                                  abs_dist_yz,\n                                  abs_dist_xy,\n                                  abs_dist_xz,\n                                  sp)\n\ntrain2JHH <- read_csv(\"train2JHH.csv\")\ntrain2JHH <- train2JHH %>% select(molecule_atom_index_0_z_1_std,\n                                  molecule_dist_mean,\n                                  molecule_atom_index_0_x_1_std,\n                                  Angle,\n                                  molecule_atom_index_0_y_1_std,\n                                  molecule_type_dist_std)\n\ntrain1JHN <- read_csv(\"train1JHN.csv\")\ntrain1JHN <- train1JHN %>% select(molecule_dist_max,\n                                  molecule_dist_mean,\n                                  molecule_bonds_dist_std,\n                                  molecule_atom_1_dist_mean,\n                                  abs_dist,\n                                  molecule_couples,\n                                  molecule_atom_index_0_z_1_std,\n                                  molecule_atom_index_0_x_1_std,\n                                  molecule_atom_index_0_y_1_std,\n                                  z_1,\n                                  molecule_atom_1_dist_std,\n                                  molecule_type_dist_std,\n                                  z_0,\n                                  sp)\n\ntrain2JHN <- read_csv(\"train2JHN.csv\")\ntrain2JHN <- train2JHN %>% select(molecule_type_dist_std,\n                                  Angle,\n                                  abs_dist,\n                                  molecule_bonds_dist_std)\n\ntrain2JHC <- read_csv(\"train2JHC.csv\")\ntrain2JHC <- train2JHC %>% select(Angle,\n                                  molecule_atom_index_0_z_1_std,\n                                  molecule_atom_index_0_x_1_std,\n                                  molecule_atom_index_0_y_1_std)\n\ntrain3JHH <- read_csv(\"train3JHH.csv\")\ntrain3JHH <- train3JHH %>% select(cos2T,\n                                  cosT,\n                                  Torsion,\n                                  molecule_atom_index_0_z_1_std,\n                                  molecule_atom_index_0_x_1_std,\n                                  molecule_atom_index_0_y_1_std)\n\ntrain3JHC <- read_csv(\"train3JHC.csv\")\ntrain3JHC <- train3JHC %>% select(cos2T,\n                                  cosT,\n                                  Torsion,\n                                  molecule_atom_index_0_dist_std_div,\n                                  molecule_atom_index_0_z_1_std,\n                                  molecule_atom_index_0_x_1_std,\n                                  molecule_atom_index_0_y_1_std)\n\ntrain3JHN <- read_csv(\"train3JHN.csv\")\ntrain3JHN <- train3JHN %>% select(molecule_bonds_dist_std,\n                                  molecule_type_dist_std,\n                                  Torsion,\n                                  cos2T,\n                                  cosT)\n\ngc()\n\ntest1JHC <- read_csv(\"test1JHC.csv\")\ntest1JHC <- test1JHC %>% select(molecule_atom_index_0_z_1_std,\n                                molecule_atom_index_0_x_1_std,\n                                molecule_atom_index_0_y_1_std,\n                                molecule_atom_index_0_y_1_mean_div,\n                                molecule_atom_index_0_dist_max_div,\n                                molecule_atom_1_dist_mean,\n                                molecule_atom_index_0_dist_std,\n                                molecule_atom_index_1_dist_std,\n                                molecule_couples,\n                                abs_dist,\n                                dist_xz,\n                                abs_dist_yz,\n                                abs_dist_xy,\n                                abs_dist_xz,\n                                sp)\n\ntest2JHH <- read_csv(\"test2JHH.csv\")\ntest2JHH <- test2JHH %>% select(molecule_atom_index_0_z_1_std,\n                                molecule_dist_mean,\n                                molecule_atom_index_0_x_1_std,\n                                Angle,\n                                molecule_atom_index_0_y_1_std,\n                                molecule_type_dist_std)\n\ntest1JHN <- read_csv(\"test1JHN.csv\")\ntest1JHN <- test1JHN %>% select(molecule_dist_max,\n                                molecule_dist_mean,\n                                molecule_bonds_dist_std,\n                                molecule_atom_1_dist_mean,\n                                abs_dist,\n                                molecule_couples,\n                                molecule_atom_index_0_z_1_std,\n                                molecule_atom_index_0_x_1_std,\n                                molecule_atom_index_0_y_1_std,\n                                z_1,\n                                molecule_atom_1_dist_std,\n                                molecule_type_dist_std,\n                                z_0,\n                                sp)\n\ntest2JHN <- read_csv(\"test2JHN.csv\")\ntest2JHN <- test2JHN %>% select(molecule_type_dist_std,\n                                Angle,\n                                abs_dist,\n                                molecule_bonds_dist_std)\n\ntest2JHC <- read_csv(\"test2JHC.csv\")\ntest2JHC <- test2JHC %>% select(Angle,\n                                molecule_atom_index_0_z_1_std,\n                                molecule_atom_index_0_x_1_std,\n                                molecule_atom_index_0_y_1_std)\n\ntest3JHH <- read_csv(\"test3JHH.csv\")\ntest3JHH <- test3JHH %>% select(cos2T,\n                                cosT,\n                                Torsion,\n                                molecule_atom_index_0_z_1_std,\n                                molecule_atom_index_0_x_1_std,\n                                molecule_atom_index_0_y_1_std)\n\ntest3JHC <- read_csv(\"test3JHC.csv\")\ntest3JHC <- test3JHC %>% select(cos2T,\n                                cosT,\n                                Torsion,\n                                molecule_atom_index_0_dist_std_div,\n                                molecule_atom_index_0_z_1_std,\n                                molecule_atom_index_0_x_1_std,\n                                molecule_atom_index_0_y_1_std)\n\ntest3JHN <- read_csv(\"test3JHN.csv\")\ntest3JHN <- test3JHN %>% select(molecule_bonds_dist_std,\n                                molecule_type_dist_std,\n                                Torsion,\n                                cos2T,\n                                cosT)\n\ngc()\n\n# -------------------------- BONDS --------------------------------\n# using features from: https://www.kaggle.com/c/champs-scalar-coupling/discussion/96419#latest-557409\n\nbonds1JHC <- read_csv(\"trainbonds1JHC.csv\")\nbonds1JHC <- bonds1JHC %>% select(bond_lengths_mean_y, bond_lengths_mean_x)\ntrain1JHC <- cbind(train1JHC, bonds1JHC)\n\nbonds2JHH <- read_csv(\"trainbonds2JHH.csv\")\nbonds2JHH <- bonds2JHH %>% select(bond_lengths_mean_y, bond_lengths_mean_x)\ntrain2JHH <- cbind(train2JHH, bonds2JHH)\n\nbonds1JHN <- read_csv(\"trainbonds1JHN.csv\")\nbonds1JHN <- bonds1JHN %>% select(bond_lengths_mean_y, bond_lengths_mean_x)\ntrain1JHN <- cbind(train1JHN, bonds1JHN)\n\nbonds2JHN <- read_csv(\"trainbonds2JHN.csv\")\nbonds2JHN <- bonds2JHN %>% select(bond_lengths_mean_y, bond_lengths_mean_x)\ntrain2JHN <- cbind(train2JHN, bonds2JHN)\n\nbonds2JHC <- read_csv(\"trainbonds2JHC.csv\")\nbonds2JHC <- bonds2JHC %>% select(bond_lengths_mean_y, bond_lengths_mean_x)\ntrain2JHC <- cbind(train2JHC, bonds2JHC)\n\nbonds3JHH <- read_csv(\"trainbonds3JHH.csv\")\nbonds3JHH <- bonds3JHH %>% select(bond_lengths_mean_y, bond_lengths_mean_x)\ntrain3JHH <- cbind(train3JHH, bonds3JHH)\n\nbonds3JHC <- read_csv(\"trainbonds3JHC.csv\")\nbonds3JHC <- bonds3JHC %>% select(bond_lengths_mean_y, bond_lengths_mean_x)\ntrain3JHC <- cbind(train3JHC, bonds3JHC)\n\nbonds3JHN <- read_csv(\"trainbonds3JHN.csv\")\nbonds3JHN <- bonds3JHN %>% select(bond_lengths_mean_y, bond_lengths_mean_x)\ntrain3JHN <- cbind(train3JHN, bonds3JHN)\n\nbonds1JHC <- read_csv(\"testbonds1JHC.csv\")\nbonds1JHC <- bonds1JHC %>% select(bond_lengths_mean_y, bond_lengths_mean_x)\ntest1JHC <- cbind(test1JHC, bonds1JHC)\n\nbonds2JHH <- read_csv(\"testbonds2JHH.csv\")\nbonds2JHH <- bonds2JHH %>% select(bond_lengths_mean_y, bond_lengths_mean_x)\ntest2JHH <- cbind(test2JHH, bonds2JHH)\n\nbonds1JHN <- read_csv(\"testbonds1JHN.csv\")\nbonds1JHN <- bonds1JHN %>% select(bond_lengths_mean_y, bond_lengths_mean_x)\ntest1JHN <- cbind(test1JHN, bonds1JHN)\n\nbonds2JHN <- read_csv(\"testbonds2JHN.csv\")\nbonds2JHN <- bonds2JHN %>% select(bond_lengths_mean_y, bond_lengths_mean_x)\ntest2JHN <- cbind(test2JHN, bonds2JHN)\n\nbonds2JHC <- read_csv(\"testbonds2JHC.csv\")\nbonds2JHC <- bonds2JHC %>% select(bond_lengths_mean_y, bond_lengths_mean_x)\ntest2JHC <- cbind(test2JHC, bonds2JHC)\n\nbonds3JHH <- read_csv(\"testbonds3JHH.csv\")\nbonds3JHH <- bonds3JHH %>% select(bond_lengths_mean_y, bond_lengths_mean_x)\ntest3JHH <- cbind(test3JHH, bonds3JHH)\n\nbonds3JHC <- read_csv(\"testbonds3JHC.csv\")\nbonds3JHC <- bonds3JHC %>% select(bond_lengths_mean_y, bond_lengths_mean_x)\ntest3JHC <- cbind(test3JHC, bonds3JHC)\n\nbonds3JHN <- read_csv(\"testbonds3JHN.csv\")\nbonds3JHN <- bonds3JHN %>% select(bond_lengths_mean_y, bond_lengths_mean_x)\ntest3JHN <- cbind(test3JHN, bonds3JHN)\n\nrm(bonds1JHC, bonds2JHH, bonds1JHN, bonds2JHN, bonds2JHC, bonds3JHH, bonds3JHC, bonds3JHN)\ngc()\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Time for training using LightGBM. What I did here is run each type independently with all the features above, then select for each type the features that seemed to perform the best using feature importance plots. This took many hours but was totally worth the effort."},{"metadata":{"trusted":true},"cell_type":"code","source":"pred_lgb <- as.matrix(0*(data.frame(read_csv(\"sample_submission.csv\") [,1])))\n\nfor (i in 1:8){\n  set.seed(42 + i)\n  print(i)\n  \n  params <- list(boosting_type = \"gbdt\",\n                 objective = \"regression_l2\", # thanks to Giba\n                 learning_rate = 0.15,\n                 num_leaves = 585,\n                 sub_feature = 0.90,\n                 sub_row = 0.85,\n                 metric = 'mae',\n                 num_threads=10)\n  \n  tr_type <- (tr_te_type[ tri] == types[i])\n  te_type <- (tr_te_type[-tri] == types[i])\n  \n  if (i==1){\n    data <- cbind(cbind(tr_te[ tri, ][tr_type,], train1JHC), y = y[tr_type,])\n    ty <- data$y\n    data <- data %>% select(mmff94.x, bond_lengths_mean_x, dist_1_mean_st, yukawa_H.x, mmff94.y, yukawa_H.y, sp, gasteiger.x, eem2015ha.y, dist, \n                            dist_dif, dist_1_min, bond_lengths_mean_y, molecule_atom_index_0_dist_max_div, dist_1_max_st, yukawa_C.x, yukawa_O.y, \n                            eem2015bm.x, dist_0_max, yukawa_O.x, dist_0_sk, gasteiger.y, eem2015bm.y, eem.x, dist_1_max, yukawa_N.y, eem2015hm.x, \n                            yukawa_C.y, eem2015bn.y, dist_0_kr, dist_0_mean, dist_0_mad, eem2015bn.x, eem2015ba.y, dist_1_var_st, yukawa_N.x, \n                            coulomb_O.y, dist_resid, dist_0_var, eem2015hm.y, H2_mean, dist_mean, dist_1_sk, molecule_atom_index_0_dist_std, \n                            gasteiger.x_sum, dist_1_kr_st, qtpie.y, qtpie.x, eem2015ba.x, dist_1_mad, dist_1_kr, dist_1_var, dist_sd, coulomb_O.x, \n                            coulomb_C.x, eem.y, dist_1_mean, molecule_atom_index_1_dist_std, qeq.y, eem2015hn.y, eem2015hn.x, dist_0_mean_st, dist_0_min, y)\n    data <- data %>% select (-y)\n    ltrain1 <- lgb.Dataset(data = data %>% data.matrix() , label = ty )\n    datat <- cbind(tr_te[-tri, ][te_type,], test1JHC)\n    ltest1 <- datat %>% select(mmff94.x, bond_lengths_mean_x, dist_1_mean_st, yukawa_H.x, mmff94.y, yukawa_H.y, sp, gasteiger.x, eem2015ha.y, dist, \n                               dist_dif, dist_1_min, bond_lengths_mean_y, molecule_atom_index_0_dist_max_div, dist_1_max_st, yukawa_C.x, yukawa_O.y, \n                               eem2015bm.x, dist_0_max, yukawa_O.x, dist_0_sk, gasteiger.y, eem2015bm.y, eem.x, dist_1_max, yukawa_N.y, eem2015hm.x, \n                               yukawa_C.y, eem2015bn.y, dist_0_kr, dist_0_mean, dist_0_mad, eem2015bn.x, eem2015ba.y, dist_1_var_st, yukawa_N.x, \n                               coulomb_O.y, dist_resid, dist_0_var, eem2015hm.y, H2_mean, dist_mean, dist_1_sk, molecule_atom_index_0_dist_std, \n                               gasteiger.x_sum, dist_1_kr_st, qtpie.y, qtpie.x, eem2015ba.x, dist_1_mad, dist_1_kr, dist_1_var, dist_sd, coulomb_O.x, \n                               coulomb_C.x, eem.y, dist_1_mean, molecule_atom_index_1_dist_std, qeq.y, eem2015hn.y, eem2015hn.x, dist_0_mean_st, dist_0_min) %>% data.matrix()\n  }\n  if (i==2){\n    data <- cbind(cbind(tr_te[ tri, ][tr_type,], train2JHH), y = y[tr_type,])\n    ty <- data$y\n    data <- data %>% select(Angle, mmff94.x, dist_1_min, mmff94.y, gasteiger.x, dist, dist_0_min_st, qeq.x, dist_dif, yukawa_H.x, dist_1_min_st, \n                            bond_lengths_mean_x, yukawa_C.x, eem.y, qtpie.x, dist_0_min, bond_lengths_mean_y, yukawa_N.x, qtpie.y, gasteiger.y, \n                            yukawa_H.y, eem.x, eem2015hn.x, dist_1_max, dist_0_max, qeq.y, dist_0_mean, eem2015hn.y, dist_1_var, yukawa_C.y, \n                            yukawa_O.x, coulomb_H.y, dist_0_sk, dist_1_mean, yukawa_N.y, dist_0_mad, dist_0_var, yukawa_O.y, dist_0_var_st, \n                            dist_0_max_st, eem2015bn.y, eem2015bn.x, coulomb_H.x, dist_1_max_st, dist_0_mean_st, dist_resid, dist_0_kr, dist_1_mad_st, \n                            coulomb_N.y, dist_1_mean_st, dist_1_var_st, dist_1_mad, coulomb_O.x, dist_0_mad_st, coulomb_N.x, molecule_dist_mean, \n                            coulomb_O.y, molecule_atom_index_0_z_1_std, dist_1_sk, dist_1_kr, coulomb_C.y, molecule_atom_index_0_y_1_std, gasteiger.x_sum, \n                            gasteiger.x_sd, mmff94.y_sum, eem2015ba.y, eem2015hm.y, HH_sum, eem2015ba.x, mmff94.y_mean, dist_mean, \n                            molecule_atom_index_0_x_1_std, eem2015hm.x, y.x,y)\n    data <- data %>% select (-y)\n    ltrain1 <- lgb.Dataset(data = data %>% data.matrix() , label = ty )\n    datat <- cbind(tr_te[-tri, ][te_type,], test2JHH)\n    ltest1 <- datat %>% select(Angle, mmff94.x, dist_1_min, mmff94.y, gasteiger.x, dist, dist_0_min_st, qeq.x, dist_dif, yukawa_H.x, dist_1_min_st, \n                               bond_lengths_mean_x, yukawa_C.x, eem.y, qtpie.x, dist_0_min, bond_lengths_mean_y, yukawa_N.x, qtpie.y, gasteiger.y, \n                               yukawa_H.y, eem.x, eem2015hn.x, dist_1_max, dist_0_max, qeq.y, dist_0_mean, eem2015hn.y, dist_1_var, yukawa_C.y, \n                               yukawa_O.x, coulomb_H.y, dist_0_sk, dist_1_mean, yukawa_N.y, dist_0_mad, dist_0_var, yukawa_O.y, dist_0_var_st, \n                               dist_0_max_st, eem2015bn.y, eem2015bn.x, coulomb_H.x, dist_1_max_st, dist_0_mean_st, dist_resid, dist_0_kr, dist_1_mad_st, \n                               coulomb_N.y, dist_1_mean_st, dist_1_var_st, dist_1_mad, coulomb_O.x, dist_0_mad_st, coulomb_N.x, molecule_dist_mean, \n                               coulomb_O.y, molecule_atom_index_0_z_1_std, dist_1_sk, dist_1_kr, coulomb_C.y, molecule_atom_index_0_y_1_std, gasteiger.x_sum, \n                               gasteiger.x_sd, mmff94.y_sum, eem2015ba.y, eem2015hm.y, HH_sum, eem2015ba.x, mmff94.y_mean, dist_mean, \n                               molecule_atom_index_0_x_1_std, eem2015hm.x, y.x) %>% data.matrix()\n  }\n  if (i==3){\n    data <- cbind(cbind(tr_te[ tri, ][tr_type,], train1JHN), y = y[tr_type,])\n    ty <- data$y\n    data <- data %>% select(dist_1_min, dist_1_mean_st, dist_0_min, dist_1_min_st, dist, yukawa_H.y, gasteiger.x, eem2015hm.y, bond_lengths_mean_y, \n                            mmff94.y, mmff94.x, yukawa_N.y, eem2015ha.y, dist_1_kr_st, qtpie.x, eem.y, bond_lengths_mean_x, sp, yukawa_C.x, \n                            dist_1_max_st, yukawa_H.x, eem2015ba.x, gasteiger.y, yukawa_O.x, eem2015bn.y, yukawa_N.x, dist_0_sk, eem.x, \n                            eem2015bm.x, qeq.x, eem2015bn.x, eem2015hm.x, dist_0_mean, dist_0_max, dist_0_kr, dist_1_mad, eem2015ba.y, dist_0_var, qtpie.y, dist_1_var_st, dist_1_var, dist_dif, fc_mean, eem2015bm.y, qeq.y, dist_1_max, eem2015hn.y, dso_mean, dist_1_mean, \n                            molecule_atom_index_0_y_1_std, yukawa_C.y, dist_1_sk_st, molecule_type_dist_std, dist_0_mad, coulomb_O.x, yukawa_O.y, \n                            dist_0_mean_st, eem2015ha.x, coulomb_C.x, coulomb_H.y, y)\n    data <- data %>% select (-y)\n    ltrain1 <- lgb.Dataset(data = data %>% data.matrix(), label = ty )\n    datat <- cbind(tr_te[-tri, ][te_type,], test1JHN) \n    ltest1 <- datat %>% select(dist_1_min, dist_1_mean_st, dist_0_min, dist_1_min_st, dist, yukawa_H.y, gasteiger.x, eem2015hm.y, bond_lengths_mean_y, \n                               mmff94.y, mmff94.x, yukawa_N.y, eem2015ha.y, dist_1_kr_st, qtpie.x, eem.y, bond_lengths_mean_x, sp, yukawa_C.x, \n                               dist_1_max_st, yukawa_H.x, eem2015ba.x, gasteiger.y, yukawa_O.x, eem2015bn.y, yukawa_N.x, dist_0_sk, eem.x, \n                               eem2015bm.x, qeq.x, eem2015bn.x, eem2015hm.x, dist_0_mean, dist_0_max, dist_0_kr, dist_1_mad, eem2015ba.y, dist_0_var, qtpie.y, dist_1_var_st, dist_1_var, dist_dif, fc_mean, eem2015bm.y, qeq.y, dist_1_max, eem2015hn.y, dso_mean, dist_1_mean, \n                               molecule_atom_index_0_y_1_std, yukawa_C.y, dist_1_sk_st, molecule_type_dist_std, dist_0_mad, coulomb_O.x, yukawa_O.y, \n                               dist_0_mean_st, eem2015ha.x, coulomb_C.x, coulomb_H.y) %>% data.matrix()\n  }\n  if (i==4){\n    data <- cbind(cbind(tr_te[ tri, ][tr_type,], train2JHN), y = y[tr_type,])\n    ty <- data$y\n    data <- data %>% select(yukawa_H.x, mmff94.x, dist_0_kr, gasteiger.x, bond_lengths_mean_y, dist_0_max, dist_0_min_st, dist_0_min, dist_0_var, Angle, \n                            dist_0_mean, dist_0_mean_st, dist_dif, eem2015bm.y, qtpie.x, dist_1_mean_st, mmff94.y, dist, yukawa_N.x, eem2015bn.y, \n                            eem2015ha.y, dist_1_min, dist_0_var_st, yukawa_O.x, yukawa_C.x, yukawa_H.y, eem2015hm.y, eem.y, bond_lengths_mean_x, \n                            dist_0_max_st, dist_resid, eem2015bm.x, eem2015bn.x, yukawa_C.y, dist_0_sk, gasteiger.y, dist_1_min_st, yukawa_N.y, \n                            qtpie.y, dist_1_max_st, dist_1_var_st, dist_0_mad, coulomb_O.x, fc_mean, qeq.y, dist_0_kr_st, yukawa_O.y, qeq.x, \n                            dist_0_mad_st, eem2015hm.x, dist_1_kr_st, dist_1_max, eem2015ba.y, eem.x, dist_1_sk_st, dist_0_sk_st, eem2015hn.x, \n                            coulomb_N.y, dist_1_var, dist_1_mad_st, dist_1_mad, coulomb_O.y, y)\n    data <- data %>% select (-y)\n    ltrain1 <- lgb.Dataset(data = data %>% data.matrix() , label = ty )\n    datat <- cbind(tr_te[-tri, ][te_type,], test2JHN) \n    ltest1 <- datat %>% select(yukawa_H.x, mmff94.x, dist_0_kr, gasteiger.x, bond_lengths_mean_y, dist_0_max, dist_0_min_st, dist_0_min, dist_0_var, Angle, \n                               dist_0_mean, dist_0_mean_st, dist_dif, eem2015bm.y, qtpie.x, dist_1_mean_st, mmff94.y, dist, yukawa_N.x, eem2015bn.y, \n                               eem2015ha.y, dist_1_min, dist_0_var_st, yukawa_O.x, yukawa_C.x, yukawa_H.y, eem2015hm.y, eem.y, bond_lengths_mean_x, \n                               dist_0_max_st, dist_resid, eem2015bm.x, eem2015bn.x, yukawa_C.y, dist_0_sk, gasteiger.y, dist_1_min_st, yukawa_N.y, \n                               qtpie.y, dist_1_max_st, dist_1_var_st, dist_0_mad, coulomb_O.x, fc_mean, qeq.y, dist_0_kr_st, yukawa_O.y, qeq.x, \n                               dist_0_mad_st, eem2015hm.x, dist_1_kr_st, dist_1_max, eem2015ba.y, eem.x, dist_1_sk_st, dist_0_sk_st, eem2015hn.x, \n                               coulomb_N.y, dist_1_var, dist_1_mad_st, dist_1_mad, coulomb_O.y) %>% data.matrix()\n  }\n  if (i==5){\n    data <- cbind(cbind(tr_te[ tri, ][tr_type,], train2JHC), y = y[tr_type,])\n    ty <- data$y\n    data <- data %>% select(mmff94.x, dist_0_min, bond_lengths_mean_x, eem2015bm.x, dist_0_mean_st, gasteiger.x, dist_0_var, yukawa_H.x, \n                            eem2015ba.x, Angle, dist_0_min_st, mmff94.y, dist_0_max_st, dist_dif, bond_lengths_mean_y, dist_1_min, dist_0_var_st, \n                            qeq.x, qtpie.x, dist, dist_0_max, eem2015ha.x, yukawa_O.x, eem2015ha.y, gasteiger.y, eem.x, yukawa_N.x, eem2015hm.x, \n                            coulomb_O.y, yukawa_O.y, coulomb_O.x, dist_1_mean_st, eem2015bn.x, dist_0_sk, eem2015bn.y, eem2015bm.y, yukawa_H.y, \n                            dist_0_sk_st, dist_0_mean, yukawa_C.x, dist_0_kr_st, eem2015ba.y, yukawa_N.y, eem.y, dist_1_max_st, yukawa_C.y, \n                            eem2015hm.y, dist_resid, dist_1_min_st, dist_0_kr, eem2015hn.x, dist_1_max, dist_0_mad_st, dist_1_var_st, dist_1_kr_st, \n                            eem2015hn.y, dist_mean, dist_1_var, dist_1_sk_st, qeq.y, coulomb_N.y, coulomb_N.x, dist_1_mean, dist_0_mad, qtpie.y, \n                            y_dist, molecule_atom_index_0_y_1_std, coulomb_H.x, dist_1_mad_st, coulomb_H.y, y)\n    data <- data %>% select (-y)\n    ltrain1 <- lgb.Dataset(data = data %>% data.matrix() , label = ty )\n    datat <- cbind(tr_te[-tri, ][te_type,], test2JHC)\n    ltest1 <- datat %>% select(mmff94.x, dist_0_min, bond_lengths_mean_x, eem2015bm.x, dist_0_mean_st, gasteiger.x, dist_0_var, yukawa_H.x, \n                               eem2015ba.x, Angle, dist_0_min_st, mmff94.y, dist_0_max_st, dist_dif, bond_lengths_mean_y, dist_1_min, dist_0_var_st, \n                               qeq.x, qtpie.x, dist, dist_0_max, eem2015ha.x, yukawa_O.x, eem2015ha.y, gasteiger.y, eem.x, yukawa_N.x, eem2015hm.x, \n                               coulomb_O.y, yukawa_O.y, coulomb_O.x, dist_1_mean_st, eem2015bn.x, dist_0_sk, eem2015bn.y, eem2015bm.y, yukawa_H.y, \n                               dist_0_sk_st, dist_0_mean, yukawa_C.x, dist_0_kr_st, eem2015ba.y, yukawa_N.y, eem.y, dist_1_max_st, yukawa_C.y, \n                               eem2015hm.y, dist_resid, dist_1_min_st, dist_0_kr, eem2015hn.x, dist_1_max, dist_0_mad_st, dist_1_var_st, dist_1_kr_st, \n                               eem2015hn.y, dist_mean, dist_1_var, dist_1_sk_st, qeq.y, coulomb_N.y, coulomb_N.x, dist_1_mean, dist_0_mad, qtpie.y, \n                               y_dist, molecule_atom_index_0_y_1_std, coulomb_H.x, dist_1_mad_st, coulomb_H.y) %>% data.matrix()\n  }\n  if (i==6){\n    data <- cbind(cbind(tr_te[ tri, ][tr_type,], train3JHH), y = y[tr_type,])\n    ty <- data$y\n    data <- data %>% select(cosT, cos2T, dist_dif, dist, dist_0_min_st, dist_0_min, gasteiger.x, yukawa_H.x, dist_1_var_st, bond_lengths_mean_y, \n                            dist_1_max, dist_1_min_st, gasteiger.y, dist_0_var_st, Torsion, dist_resid, dist_1_max_st, mmff94.x, dist_1_mean_st, \n                            mmff94.y, dist_1_var, dist_1_min, bond_lengths_mean_x, dist_0_mean_st, dist_1_sk_st, dist_0_max_st, yukawa_C.y, \n                            yukawa_O.y, dist_0_max, dist_0_mad_st, dist_1_mad_st, qtpie.y, dist_1_mean, yukawa_N.x, qtpie.x, yukawa_C.x, qeq.x, \n                            yukawa_H.y, qeq.y, dist_0_sk, yukawa_N.y, dist_0_var, eem.y, eem.x, eem2015hn.y, dist_0_mean, coulomb_N.y, yukawa_O.x, \n                            eem2015bn.y, dist_1_mad, y)\n    data <- data %>% select (-y)\n    ltrain1 <- lgb.Dataset(data = data %>% data.matrix() , label = ty )\n    datat <- cbind(tr_te[-tri, ][te_type,], test3JHH) \n    ltest1 <- datat %>% select(cosT, cos2T, dist_dif, dist, dist_0_min_st, dist_0_min, gasteiger.x, yukawa_H.x, dist_1_var_st, bond_lengths_mean_y, \n                               dist_1_max, dist_1_min_st, gasteiger.y, dist_0_var_st, Torsion, dist_resid, dist_1_max_st, mmff94.x, dist_1_mean_st, \n                               mmff94.y, dist_1_var, dist_1_min, bond_lengths_mean_x, dist_0_mean_st, dist_1_sk_st, dist_0_max_st, yukawa_C.y, \n                               yukawa_O.y, dist_0_max, dist_0_mad_st, dist_1_mad_st, qtpie.y, dist_1_mean, yukawa_N.x, qtpie.x, yukawa_C.x, qeq.x, \n                               yukawa_H.y, qeq.y, dist_0_sk, yukawa_N.y, dist_0_var, eem.y, eem.x, eem2015hn.y, dist_0_mean, coulomb_N.y, yukawa_O.x, \n                               eem2015bn.y, dist_1_mad) %>% \n      data.matrix()\n  }\n  if (i==7){\n    data <- cbind(cbind(tr_te[ tri, ][tr_type,], train3JHC), y = y[tr_type,])\n    ty <- data$y\n    data <- data %>% select(cosT, cos2T, dist_dif, gasteiger.x, dist_0_min, Torsion, mmff94.x, dist, mmff94.y, yukawa_C.x, dist_0_mean_st, \n                            yukawa_H.x, qtpie.x, dist_resid, bond_lengths_mean_x, dist_0_max_st, dist_0_max, dist_1_min, bond_lengths_mean_y, \n                            dist_0_min_st, dist_1_min_st, molecule_atom_index_0_dist_std_div, dist_0_sk_st, dist_1_var_st, dist_0_sk, \n                            dist_0_var_st, gasteiger.y, dist_0_mad_st, yukawa_O.x, dist_0_var, eem2015ha.y, yukawa_O.y, dist_0_mean, \n                            yukawa_N.x, yukawa_H.y, eem2015hm.y, eem2015ba.y, eem2015bn.x, dist_1_max_st, dist_0_kr, yukawa_C.y, eem2015bm.y, \n                            coulomb_O.x, qeq.x, dist_0_kr_st, eem2015bn.y, eem.x, dist_1_var, dist_1_max, dist_1_mean_st, y)\n    data <- data %>% select (-y)\n    ltrain1 <- lgb.Dataset(data = data %>% data.matrix() , label = ty )\n    datat <- cbind(tr_te[-tri, ][te_type,], test3JHC)\n    ltest1 <- datat %>% select(cosT, cos2T, dist_dif, gasteiger.x, dist_0_min, Torsion, mmff94.x, dist, mmff94.y, yukawa_C.x, dist_0_mean_st, \n                               yukawa_H.x, qtpie.x, dist_resid, bond_lengths_mean_x, dist_0_max_st, dist_0_max, dist_1_min, bond_lengths_mean_y, \n                               dist_0_min_st, dist_1_min_st, molecule_atom_index_0_dist_std_div, dist_0_sk_st, dist_1_var_st, dist_0_sk, \n                               dist_0_var_st, gasteiger.y, dist_0_mad_st, yukawa_O.x, dist_0_var, eem2015ha.y, yukawa_O.y, dist_0_mean, \n                               yukawa_N.x, yukawa_H.y, eem2015hm.y, eem2015ba.y, eem2015bn.x, dist_1_max_st, dist_0_kr, yukawa_C.y, eem2015bm.y, \n                               coulomb_O.x, qeq.x, dist_0_kr_st, eem2015bn.y, eem.x, dist_1_var, dist_1_max, dist_1_mean_st) %>% data.matrix()\n  }\n  if (i==8){\n    data <- cbind(cbind(tr_te[ tri, ][tr_type,], train3JHN), y = y[tr_type,])\n    ty <- data$y\n    data <- data %>% select(cos2T, dist, dist_dif, Torsion, yukawa_C.x, gasteiger.x, eem2015bm.y, cosT, bond_lengths_mean_x, dist_0_min, yukawa_H.x, \n                            dist_1_min, dist_0_max_st, bond_lengths_mean_y, qtpie.x, dist_resid, mmff94.y, fc_mean, dist_0_max, dist_0_sk, dist_1_min_st, \n                            yukawa_N.x, dist_0_mean_st, eem2015ha.y, dist_0_min_st, eem2015bn.x, dist_0_mean, yukawa_C.y, yukawa_O.x, eem2015ba.y, \n                            dist_1_var_st, mmff94.x, dist_0_kr, gasteiger.y, eem2015hn.x, dist_1_mean, dist_1_mean_st, eem2015bn.y, yukawa_H.y, \n                            eem2015bm.x, dist_mean, qeq.x, yukawa_O.y, eem.x, dist_1_max, coulomb_N.y, \n                            dist_1_var, yukawa_N.y, dist_1_sk, eem2015hm.y, eem2015hn.y, y)\n    data <- data %>% select (-y)\n    ltrain1 <- lgb.Dataset(data = data %>% data.matrix() , label = ty )\n    datat <- cbind(tr_te[-tri, ][te_type,], test3JHN)\n    ltest1 <- datat %>% select(cos2T, dist, dist_dif, Torsion, yukawa_C.x, gasteiger.x, eem2015bm.y, cosT, bond_lengths_mean_x, dist_0_min, yukawa_H.x, \n                               dist_1_min, dist_0_max_st, bond_lengths_mean_y, qtpie.x, dist_resid, mmff94.y, fc_mean, dist_0_max, dist_0_sk, dist_1_min_st, \n                               yukawa_N.x, dist_0_mean_st, eem2015ha.y, dist_0_min_st, eem2015bn.x, dist_0_mean, yukawa_C.y, yukawa_O.x, eem2015ba.y, \n                               dist_1_var_st, mmff94.x, dist_0_kr, gasteiger.y, eem2015hn.x, dist_1_mean, dist_1_mean_st, eem2015bn.y, yukawa_H.y, \n                               eem2015bm.x, dist_mean, qeq.x, yukawa_O.y, eem.x, dist_1_max, coulomb_N.y, \n                               dist_1_var, yukawa_N.y, dist_1_sk, eem2015hm.y, eem2015hn.y) %>% data.matrix()\n  }\n  \n  model_lgb_cv <- lgb.cv(params = params, data = ltrain1, nfold = 8, nrounds = 20000, early_stopping_rounds = 20, eval_freq = 1000)\n  \n  #lgb_train_oc = lgb.train(params = params, ltrain1, nrounds = model_lgb_cv$best_iter) \n  #fimp_cv <-lgb.importance(lgb_train_oc)\n  #fimp <- fimp_cv[, .(mean_gain = mean(Gain)), .(Feature)]\n  #lgb.plot.importance(fimp_cv, top_n=100)\n  #setorder(fimp, -mean_gain)\n  #View(fimp$Feature[1:100])\n  \n  # I'm not sure if what I'm doing below is the correct way, so please comment if not. Gave the best score though!\n  fold1 <- predict(model_lgb_cv$boosters[[1]]$booster, ltest1, num_iteration = model_lgb_cv$best_iter)\n  fold2 <- predict(model_lgb_cv$boosters[[2]]$booster, ltest1, num_iteration = model_lgb_cv$best_iter)\n  fold3 <- predict(model_lgb_cv$boosters[[3]]$booster, ltest1, num_iteration = model_lgb_cv$best_iter)\n  fold4 <- predict(model_lgb_cv$boosters[[4]]$booster, ltest1, num_iteration = model_lgb_cv$best_iter)\n  fold5 <- predict(model_lgb_cv$boosters[[5]]$booster, ltest1, num_iteration = model_lgb_cv$best_iter)\n  fold6 <- predict(model_lgb_cv$boosters[[6]]$booster, ltest1, num_iteration = model_lgb_cv$best_iter)\n  fold7 <- predict(model_lgb_cv$boosters[[7]]$booster, ltest1, num_iteration = model_lgb_cv$best_iter)\n  fold8 <- predict(model_lgb_cv$boosters[[8]]$booster, ltest1, num_iteration = model_lgb_cv$best_iter)\n  pred_lgb[te_type==T] = rowMeans(cbind(fold1,fold2,fold3,fold4,fold5,fold6,fold7,fold8)) \n\n  gc()\n}\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Time to generate our submission file, and you can blend that with some of the other public blends to hit over -1.580."},{"metadata":{"trusted":true},"cell_type":"code","source":"read_csv(\"sample_submission.csv\") %>%  \n  mutate(scalar_coupling_constant = pred_lgb) %>%\n  write_csv(\"sub_lgb.csv\")\n\n# -1.374 @8 folds\n# -1.380 @8 folds for 15k rounds max\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"I hope you find this useful!"}],"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}