{"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.4.0"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":81933,"databundleVersionId":9643020,"sourceType":"competition"}],"dockerImageVersionId":30749,"isInternetEnabled":true,"language":"r","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Set Up","metadata":{}},{"cell_type":"markdown","source":"## Load Libraries","metadata":{}},{"cell_type":"code","source":"options(scipen = 999)\n\nlibrary(data.table, quietly = TRUE)\nlibrary(dplyr, quietly = TRUE)\nlibrary(ggplot2, quietly = TRUE)\nlibrary(gt, quietly = TRUE)\nlibrary(gtExtras, quietly = TRUE)\nlibrary(gtsummary, quietly = TRUE)\nlibrary(h2o, quietly = TRUE)\nlibrary(hrbrthemes, quietly = TRUE)\nlibrary(janitor, quietly = TRUE)\nlibrary(lubridate, quietly = TRUE)\nlibrary(ModelMetrics, quietly = TRUE)\nlibrary(purrr, quietly = TRUE)\nlibrary(scales, quietly = TRUE)\nlibrary(skimr, quietly = TRUE)\nlibrary(stringr, quietly = TRUE)\nlibrary(summarytools, quietly = TRUE)\nlibrary(tidyverse, quietly = TRUE)\n\nh2o.init()","metadata":{"execution":{"iopub.status.busy":"2024-09-27T12:13:49.542138Z","iopub.execute_input":"2024-09-27T12:13:49.544790Z","iopub.status.idle":"2024-09-27T12:13:49.760743Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Read Data","metadata":{}},{"cell_type":"code","source":"# train\ntrain_df <- fread(\"/kaggle/input/child-mind-institute-problematic-internet-use/train.csv\") %>%\n    mutate_if(is.character, ~ ifelse(.==\"\", NA, as.character(.))) %>%\n    janitor::clean_names() %>%\n    mutate(sii = as.character(sii))\n    \n\n# test\ntest_df <- fread(\"/kaggle/input/child-mind-institute-problematic-internet-use/test.csv\") %>%\n    mutate_if(is.character, ~ ifelse(.==\"\", NA, as.character(.))) %>%\n    janitor::clean_names()\n\n# preview\nhead(train_df)","metadata":{"execution":{"iopub.status.busy":"2024-09-27T12:13:49.765565Z","iopub.execute_input":"2024-09-27T12:13:49.767853Z","iopub.status.idle":"2024-09-27T12:13:50.259725Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Preview\n- The number of rows equals the unique number of IDs\n- Most numeric columns are incomplete\n- The response variable (sii) contains NA values","metadata":{}},{"cell_type":"code","source":"skimr::skim_tee(train_df)","metadata":{"execution":{"iopub.status.busy":"2024-09-27T12:13:50.263661Z","iopub.execute_input":"2024-09-27T12:13:50.265586Z","iopub.status.idle":"2024-09-27T12:13:51.846661Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Prepare Data For Modeling","metadata":{}},{"cell_type":"code","source":"# data engineering\ntrain_df <- train_df %>%\n    mutate(across(where(is.character), as.factor)) %>%\n    filter(complete.cases(sii))\n\ntest_df <- test_df %>%\n    mutate(across(where(is.character), as.factor))\n\n# preview\ndim(train_df)","metadata":{"execution":{"iopub.status.busy":"2024-09-27T12:13:51.850945Z","iopub.execute_input":"2024-09-27T12:13:51.852909Z","iopub.status.idle":"2024-09-27T12:13:51.923492Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Convert to H2O","metadata":{}},{"cell_type":"code","source":"# convert testing data into h2o data frame\ntrain_h2o_df <- as.h2o(train_df)\n\n# convert testing data into h2o data frame\ntest_h2o_df <- as.h2o(test_df)\n\n# list of predictors for modeling\npredictors = names(test_df %>% select(-id))\n\n# target variable for modeling\nresponse = \"sii\"","metadata":{"execution":{"iopub.status.busy":"2024-09-27T12:14:05.373333Z","iopub.execute_input":"2024-09-27T12:14:05.375435Z","iopub.status.idle":"2024-09-27T12:14:06.653190Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Create Model","metadata":{}},{"cell_type":"markdown","source":"## XGBoost","metadata":{}},{"cell_type":"code","source":"# xgb model\nprice_xgb <- h2o.xgboost(\n    x = predictors,\n    y = response,\n    training_frame = train_h2o_df,\n    seed = 84\n)","metadata":{"execution":{"iopub.status.busy":"2024-09-27T12:14:09.778357Z","iopub.execute_input":"2024-09-27T12:14:09.781627Z","iopub.status.idle":"2024-09-27T12:14:17.134871Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Predict on Test Data","metadata":{}},{"cell_type":"code","source":"# predict on test data\npred <- as.data.frame(h2o.predict(price_xgb, newdata = test_h2o_df))\n\ncbind(\n    id = test_df |> pull(id)\n    ,pred\n) |>\nrename(price = predict) |>\nfwrite(paste0(\"/kaggle/working/csflach_submission\", Sys.time(),\".csv\"))","metadata":{"execution":{"iopub.status.busy":"2024-09-27T12:15:54.475323Z","iopub.execute_input":"2024-09-27T12:15:54.477443Z","iopub.status.idle":"2024-09-27T12:15:54.637047Z"},"trusted":true},"execution_count":null,"outputs":[]}]}