{"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":"markdown","source":"# Description","metadata":{}},{"cell_type":"markdown","source":"# Load libraries","metadata":{}},{"cell_type":"code","source":"suppressPackageStartupMessages({\n    \nlibrary(tidyverse)\nlibrary(caret)\nlibrary(gbm)\nlibrary(tools)\nlibrary(lightgbm)\nlibrary(ggplot2)\nlibrary(scales)\n\n    })\n\n\nstart_time <- Sys.time()","metadata":{"execution":{"iopub.status.busy":"2023-04-18T09:54:52.611327Z","iopub.execute_input":"2023-04-18T09:54:52.621020Z","iopub.status.idle":"2023-04-18T09:54:56.658954Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Load files\n","metadata":{}},{"cell_type":"code","source":"files <- list.files(path = \"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/\", pattern=\"*.csv\",\n                        full.names = TRUE, recursive = TRUE)\n\nset.seed(123)\nnn <- sample(files, 2)\nnn\n\n#graf <- as.data.frame(read.csv(paste0(files[1])))\n","metadata":{"execution":{"iopub.status.busy":"2023-04-18T09:55:03.069220Z","iopub.execute_input":"2023-04-18T09:55:03.102362Z","iopub.status.idle":"2023-04-18T09:55:03.224451Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#rta <- floor(nrow(graf)/128)\n#df <- data.frame(Time = c(seq(1:(rta*100))))\n#graf <- head(graf, rta*128)\n\n\n#df$AccV <- approx(graf$Time, graf$AccV, xout = df$Time)$y\n#df$AccML <- approx(graf$Time, graf$AccML, xout = df$Time)$y\n#df$AccAP <- approx(graf$Time, graf$AccAP, xout = df$Time)$y\n#df$StartHesitation <- approx(graf$Time, graf$StartHesitation, xout = df$Time)$y\n#df$Turn <- approx(graf$Time, graf$Turn, xout = df$Time)$y\n#df$Walking <- approx(graf$Time, graf$Walking, xout = df$Time)$y\n\n#df$StartHesitation <- ifelse(df$StartHesitation > 0.5 , 1, 0)\n#df$Turn <- ifelse(df$Turn > 0.5 , 1, 0)\n#df$Walking <- ifelse(df$Walking > 0.5 , 1, 0)\n\n# Add Valid Task!!\n\n#head(df)\n#head(graf)\n\n\n#head(graf_a)\n\n#plot <- head(graf, 150)\n\n#plot(plot$AccAP, type = \"S\")\n\n\n\n#x_100 <- approx(plot$Time, data_128$x, time_100)$y\n#y_100 <- approx(plot$Time, data_128$y, time_100)$y\n#z_100 <- approx(data_128$time, data_128$z, time_100)$y\n\n# Создаем новый датафрейм с данными на новой шкале\n#data_100 <- data.frame(time = time_100, x = x_100, y = y_100, z = z_100)","metadata":{"execution":{"iopub.status.busy":"2023-04-12T20:22:10.121021Z","iopub.execute_input":"2023-04-12T20:22:10.122651Z","iopub.status.idle":"2023-04-12T20:22:10.135923Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Load tdcsfog train to one dataframe","metadata":{}},{"cell_type":"code","source":"files <- list.files(path = \"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/tdcsfog/\")\nfiles <- sample(files, 100) #Size\n\ngraf <- as.data.frame(read.csv(\n    paste0(\"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/tdcsfog/\", files[1])))\n\nrta <- floor(nrow(graf)/128)\ndf <- data.frame(Time = c(seq(1:(rta*100))))\ngraf <- head(graf, rta*128)\n\n\ndf$AccV <- approx(graf$Time, graf$AccV, xout = df$Time)$y\ndf$AccML <- approx(graf$Time, graf$AccML, xout = df$Time)$y\ndf$AccAP <- approx(graf$Time, graf$AccAP, xout = df$Time)$y\ndf$StartHesitation <- approx(graf$Time, graf$StartHesitation, xout = df$Time)$y\ndf$Turn <- approx(graf$Time, graf$Turn, xout = df$Time)$y\ndf$Walking <- approx(graf$Time, graf$Walking, xout = df$Time)$y\n\ndf$StartHesitation <- ifelse(df$StartHesitation > 0.5 , 1, 0)\ndf$Turn <- ifelse(df$Turn > 0.5 , 1, 0)\ndf$Walking <- ifelse(df$Walking > 0.5 , 1, 0)\n\ntrain_tdcsfog <- df\nrm(df, graf)\n\n#105\nfor (i in 2:length(files)) {\n#for (i in 2:305) {\n\n                       \n                       \ngraf <- read.csv(paste0(\"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/tdcsfog/\", files[i]))\n    \n    \n rta <- floor(nrow(graf)/128)\ndf <- data.frame(Time = c(seq(1:(rta*100))))\ngraf <- head(graf, rta*128)\n\n\ndf$AccV <- approx(graf$Time, graf$AccV, xout = df$Time)$y\ndf$AccML <- approx(graf$Time, graf$AccML, xout = df$Time)$y\ndf$AccAP <- approx(graf$Time, graf$AccAP, xout = df$Time)$y\ndf$StartHesitation <- approx(graf$Time, graf$StartHesitation, xout = df$Time)$y\ndf$Turn <- approx(graf$Time, graf$Turn, xout = df$Time)$y\ndf$Walking <- approx(graf$Time, graf$Walking, xout = df$Time)$y\n\ndf$StartHesitation <- ifelse(df$StartHesitation > 0.5 , 1, 0)\ndf$Turn <- ifelse(df$Turn > 0.5 , 1, 0)\ndf$Walking <- ifelse(df$Walking > 0.5 , 1, 0)\n\ntrain_tdcsfog_ <- df\n    \ntrain_tdcsfog <- rbind(train_tdcsfog, train_tdcsfog_)\n    \nrm(df, graf)   \n    \n\n}\n\n#write.csv(train_defog, \"/kaggle/working/train_defog.csv\", row.names = FALSE)\nprint(c(paste0(length(files), \" - files are loaded\")))\ndim(train_tdcsfog)\nhead(train_tdcsfog)","metadata":{"execution":{"iopub.status.busy":"2023-04-18T09:55:10.687929Z","iopub.execute_input":"2023-04-18T09:55:10.689454Z","iopub.status.idle":"2023-04-18T09:55:29.151079Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Load defog train to one dataframe","metadata":{}},{"cell_type":"code","source":"files <- list.files(path = \"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/\")\nfiles <- sample(files, 10) #Size\n\ntrain_defog <- as.data.frame(read.csv(\n    paste0(\"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/\", files[1])))\n\n\nfor (i in 2:length(files)) {\n#for (i in 2:20) {\ntrain_defog <- rbind(train_defog, read.csv(\n    paste0(\"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/\", files[i])))\n\n}\n\n#write.csv(train_defog, \"/kaggle/working/train_defog.csv\", row.names = FALSE)\nprint(c(paste0(length(files), \" - files are loaded\")))\ndim(train_defog)\nhead(train_defog)\n\n\n\n","metadata":{"execution":{"iopub.status.busy":"2023-04-18T09:55:34.871844Z","iopub.execute_input":"2023-04-18T09:55:34.873472Z","iopub.status.idle":"2023-04-18T09:55:49.134005Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"summary(train_defog$AccV)\nsummary(train_tdcsfog$AccV)","metadata":{"execution":{"iopub.status.busy":"2023-04-18T09:55:58.870707Z","iopub.execute_input":"2023-04-18T09:55:58.872294Z","iopub.status.idle":"2023-04-18T09:55:58.991797Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Load test data - off","metadata":{}},{"cell_type":"code","source":"#filenames <- list.files(\"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/test\", pattern=\"*.csv\",\n#                       full.names = TRUE, recursive = TRUE)\n\n#test_fast <- do.call(rbind, sapply(filenames, read.csv, simplify = FALSE))\n#test_fast$name <- file_path_sans_ext(file_path_sans_ext(basename(row.names(test_fast))))\n#test_fast$Id <- paste0(test_fast$name, \"_\", test_fast$Time)\n#rownames(test_fast) <- NULL\n#filenames\n\n\n#df <- aggregate(test_fast$AccV, list(test_fast$name), FUN = mean)\n#colnames(df) <- c('name', 'mean') \n\n\n#test_fast <- merge(x = test_fast, y = df, by = \"name\", all.x = TRUE)\n\n#head(test_fast)\n#tail(test_fast)\n#str(test_fast)\n\n\n","metadata":{"execution":{"iopub.status.busy":"2023-04-18T10:19:31.699164Z","iopub.execute_input":"2023-04-18T10:19:31.701415Z","iopub.status.idle":"2023-04-18T10:19:36.782706Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Load notype train to one dataframe","metadata":{}},{"cell_type":"code","source":"#files <- list.files(path = \"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/notype/\")\n\n#train_notype <- as.data.frame(read.csv(\n#   paste0(\"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/notype/\", files[1])))\n\n#5\n#for (i in 2:length(files)) {\n#for (i in 2:5) {\n#train_notype <- rbind(train_notype, read.csv(\n#    paste0(\"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/notype/\", files[i]))) }\n\n\n#print(c(paste0(length(files), \" - files are loaded\")))\n#dim(train_notype)\n#head(train_notype)\n","metadata":{"execution":{"iopub.status.busy":"2023-04-12T20:26:28.258393Z","iopub.execute_input":"2023-04-12T20:26:28.260117Z","iopub.status.idle":"2023-04-12T20:26:28.272255Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Filters","metadata":{}},{"cell_type":"code","source":"#train_tdcsfog - filter data\n\ntrain_tdcsfog %>% filter(StartHesitation > 0 ) %>% head(n = 5)\n\n\ntrain_tdcsfog %>% filter(StartHesitation > 0 ) %>% nrow()\ntrain_tdcsfog %>% filter(StartHesitation > 0 ) -> tts\n#tts <- tts[1:10000, ]\n\n\ntrain_tdcsfog %>% filter(Turn > 0 ) %>% nrow()\ntrain_tdcsfog %>% filter(Turn > 0 ) -> ttt\n\ntrain_tdcsfog %>% filter(Walking > 0 ) %>% nrow()\ntrain_tdcsfog %>% filter(Walking > 0 ) -> ttw\n\ntt_count <- nrow(tts) + nrow(ttt) + nrow(ttw)\ntt_count\n\n#ttr <- sample_n(train_tdcsfog, tt_count/100 )\n\n#train_tdcsfog <- rbind(tts, ttt, ttw, ttr)\n#nrow(train_tdcsfog)\n\n\n\ntt_min <- min(nrow(tts), nrow(ttt), nrow(ttw))\ntt_min\n\n#tt_min <- ifelse(tt_min > 15000 , 15000, tt_min)\n\ntts <- head(tts, tt_min)\nttt <- head(ttt, tt_min*2)\n#ttt <- head(ttt, 200000)\nttw <- head(ttw, tt_min)\n\nttr <- sample_n(train_tdcsfog, tt_min/10)\n\n\ntrain_tdcsfog <- rbind(tts, ttt, ttw, ttr)\nnrow(train_tdcsfog)\n\n\n\n#tts - 199854\n#ttt - 1339032\n#ttw - 156463\n","metadata":{"execution":{"iopub.status.busy":"2023-04-12T20:26:28.275125Z","iopub.execute_input":"2023-04-12T20:26:28.276602Z","iopub.status.idle":"2023-04-12T20:26:28.537728Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#train_defog - filter data\n\ntrain_defog %>% filter(StartHesitation > 0 ) %>% head(n = 5)\n\n\n\ntrain_defog %>% filter(StartHesitation > 0 ) %>% nrow()\ntrain_defog %>% filter(StartHesitation > 0 ) -> tds\n\ntrain_defog %>% filter(Turn > 0 ) %>% nrow()\ntrain_defog %>% filter(Turn > 0 ) -> tdt\n\ntrain_defog %>% filter(Walking > 0 ) %>% nrow()\ntrain_defog %>% filter(Walking > 0 ) -> tdw\n\n#td_count <- nrow(tds) + nrow(tdt) + nrow(tdw)\n#td_count\n\ntd_count <- nrow(tds) + nrow(tdt) + nrow(tdw)\ntd_count\n\n#tdr <- sample_n(train_defog, td_count/100)\n\n#train_defog <- rbind(tds, tdt, tdw, tdr)\n#nrow(train_defog)\n\n\n\ntd_min <- min(nrow(tdt), nrow(tdw))\n#td_min <- ifelse(td_min > 15000 , 15000, td_min)\ntd_min\n\n#tds <- sample_n(tds, td_min) - 500\ntdt <- head(tdt, td_min*2)\n#tdt <- head(tdt, 100000)\ntdw <- head(tdw, td_min)\n\ntdr <- sample_n(train_defog, td_min/10)\n\n\ntrain_defog <- rbind(tds, tdt, tdw, tdr)\nnrow(train_defog)\n\n\n\n\n\n#tds - 374\n#tdt - 435422\n#tdw - 80487","metadata":{"execution":{"iopub.status.busy":"2023-04-12T20:26:28.541703Z","iopub.execute_input":"2023-04-12T20:26:28.543773Z","iopub.status.idle":"2023-04-12T20:26:31.104498Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Prepare data","metadata":{}},{"cell_type":"markdown","source":"# Сhange time to seconds\n\nTime An integer timestep. Series from the **tdcsfog** dataset are recorded at 128Hz (128 timesteps per second), while series from the **defog** and **daily** series are recorded at 100Hz (100 timesteps per second). \n\nSeries in the **notype** folder are from the **defog** dataset but lack event-type annotations.","metadata":{}},{"cell_type":"code","source":"#train_tdcsfog$Time <- round(train_tdcsfog$Time / 128, digits = 3)\n#train_defog$Time <- train_defog$Time / 100\n\n\n\n\n#train_notype$Time <- train_notype$Time / 100\n\n\n\n#train_tdcsfog %>% head()\n#train_defog %>% head()\n#train_notype %>% head()\n","metadata":{"execution":{"iopub.status.busy":"2023-04-12T20:26:31.107307Z","iopub.execute_input":"2023-04-12T20:26:31.108886Z","iopub.status.idle":"2023-04-12T20:26:31.120871Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Сhange Acceleration to m/s2\n\nAccV, AccML, and AccAP Acceleration from a lower-back sensor on three axes: V - vertical, ML - mediolateral, AP - anteroposterior. Data is in units of m/s^2 for **tdcsfog/** and g for **defog/** and **notype/**.\n\nCalculated based on a conversion factor of 1G = 9.80665m/s2, and 5th digit is rounded.","metadata":{}},{"cell_type":"code","source":"train_defog$AccV <- train_defog$AccV * 9.80665\ntrain_defog$AccML <- train_defog$AccML * 9.80665\ntrain_defog$AccAP <- train_defog$AccAP * 9.80665\n\n#train_notype$AccV <- train_notype$AccV * 9.80665\n#train_notype$AccML <- train_notype$AccML * 9.80665\n#train_notype$AccAP <- train_notype$AccAP * 9.80665\n\n\n\n#train_defog %>% head()\n#train_notype %>% head()","metadata":{"execution":{"iopub.status.busy":"2023-04-12T20:26:31.123469Z","iopub.execute_input":"2023-04-12T20:26:31.124863Z","iopub.status.idle":"2023-04-12T20:26:31.143775Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Change Events to factors","metadata":{}},{"cell_type":"code","source":"train_tdcsfog$StartHesitation <- as.factor(train_tdcsfog$StartHesitation)\ntrain_tdcsfog$Turn <- as.factor(train_tdcsfog$Turn)\ntrain_tdcsfog$Walking <- as.factor(train_tdcsfog$Walking)\n\n#train_tdcsfog %>% head()\n\ntrain_defog$StartHesitation <- as.factor(train_defog$StartHesitation)\ntrain_defog$Turn <- as.factor(train_defog$Turn)\ntrain_defog$Walking <- as.factor(train_defog$Walking)\n\n#train_defog %>% head()\n\n\n#train_notype$Event <- as.factor(train_notype$Event)\n\n#train_notype %>% head()\n","metadata":{"execution":{"iopub.status.busy":"2023-04-12T20:26:31.146373Z","iopub.execute_input":"2023-04-12T20:26:31.147784Z","iopub.status.idle":"2023-04-12T20:26:31.358829Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Remove 2 columns and merge \nJoin **train_tdcsfog** and **train_defog_** into one dataframe","metadata":{}},{"cell_type":"code","source":"train_defog_ <- train_defog %>% select(-c(Valid, Task))\n#head(train_defog_)\n\n\ntrain_td <- rbind(train_tdcsfog, train_defog_)\n\ndim(train_td)\n#head(train_td)\n#summary(train_td)","metadata":{"execution":{"iopub.status.busy":"2023-04-12T20:26:31.361444Z","iopub.execute_input":"2023-04-12T20:26:31.362992Z","iopub.status.idle":"2023-04-12T20:26:31.454547Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_td[,1:4] <- scale(train_td[,1:4])\nhead(train_td)","metadata":{"execution":{"iopub.status.busy":"2023-04-12T20:26:31.457017Z","iopub.execute_input":"2023-04-12T20:26:31.458342Z","iopub.status.idle":"2023-04-12T20:26:31.671492Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Basic Parameter Tuning","metadata":{}},{"cell_type":"markdown","source":"For all data\n\ntime cv = 2, p = 0.10, p = 0.10 -\n\ntime cv = 2, p = 0.20, p = 0.10 - 9369.4s (2.6h)\n\ntime cv = 2, p = 0.70, p = 0.70 - Notebook Out of Memory\n\n\n","metadata":{}},{"cell_type":"code","source":"fitControl <- trainControl(## 10-fold CV\n                           method = \"cv\",\n                           number = 2)\n","metadata":{"execution":{"iopub.status.busy":"2023-04-12T20:26:31.673999Z","iopub.execute_input":"2023-04-12T20:26:31.675326Z","iopub.status.idle":"2023-04-12T20:26:31.688538Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#seq(.005, .05,.005)","metadata":{"execution":{"iopub.status.busy":"2023-04-12T20:26:31.691082Z","iopub.execute_input":"2023-04-12T20:26:31.692429Z","iopub.status.idle":"2023-04-12T20:26:31.703108Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Tuning Grid","metadata":{}},{"cell_type":"code","source":"gbmGrid <-  expand.grid(interaction.depth = c(9, 13), \n                        n.trees = (1:20)*10, \n                        shrinkage = 0.05,\n                        #shrinkage = seq(.005, .05,.005),\n                        n.minobsinnode = 10)\n                        \nnrow(gbmGrid)\n#gbmGrid","metadata":{"execution":{"iopub.status.busy":"2023-04-12T20:26:31.705716Z","iopub.execute_input":"2023-04-12T20:26:31.707086Z","iopub.status.idle":"2023-04-12T20:26:31.728260Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Shuffle data","metadata":{}},{"cell_type":"code","source":"# Split dataframe into equal parts\ns_size <- 10000\n\ndf_split <- split(train_td, rep(1:ceiling(nrow(train_td)/s_size), each = s_size, length.out=nrow(train_td)))\n\n# Shuffle\nset.seed(123)\norder <- sample(names(df_split))\n\n# Combine subsets into a new dataframe\ndf_new <- do.call(rbind, lapply(order, function(i) df_split[[i]]))\n","metadata":{"execution":{"iopub.status.busy":"2023-04-12T20:26:31.730873Z","iopub.execute_input":"2023-04-12T20:26:31.732228Z","iopub.status.idle":"2023-04-12T20:26:32.082375Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"\n# Make 3 models\n","metadata":{}},{"cell_type":"code","source":"dim(train_td)\n#round(nrow(train_td)*0.3)+1\n#round(nrow(train_td)*0.6)","metadata":{"execution":{"iopub.status.busy":"2023-04-12T20:26:32.085003Z","iopub.execute_input":"2023-04-12T20:26:32.086399Z","iopub.status.idle":"2023-04-12T20:26:32.104202Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train <- train_td[1:round(nrow(train_td)*0.7), ]\ntest  <- train_td[(round(nrow(train_td)*0.7) + 1) : round(nrow(train_td)*0.95), ]\n\n#train <- train_td[1:150000, ]\n#test  <- train_td[150001: 170000, ]\n\n\nnrow(train)\nnrow(test)","metadata":{"execution":{"iopub.status.busy":"2023-04-12T20:26:32.107026Z","iopub.execute_input":"2023-04-12T20:26:32.108398Z","iopub.status.idle":"2023-04-12T20:26:32.211816Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"a <- c(\"StartHesitation\", \"Turn\", \"Walking\")\n#a <- c(\"StartHesitation\")\n\n\n\nfor ( i in a) {\n  \nstart_time_c <-  Sys.time()\n\n  \n    \n# add 1 target\n#train_rna_t <- cbind(train_rna, target_adv[i])\n\n    \n# make split\n# time cv = 10, p = 0.70 - ???\n\n#set.seed(123)\n\n#trainIndex <- createDataPartition(train_td[[i]], p = 0.30, list = FALSE)\n#train <- train_td[ trainIndex, ]\n#test  <- train_td[-trainIndex, ]\n    \n\n#train <- train_td[1:nrow(train_td)*0.3, ]\n#test  <- train_td[nrow(train_td)*0.3 + 1:nrow(train_td)*0.6, ]\n    \n    \n    \n# make model\n# method = \"gbm\" , glmnet\n\nassign(paste0(\"model_\", i), train(as.formula(paste(i, \"~ Time + AccV + AccML + AccAP\")), data = train, \n#assign(paste0(\"model_\", i), train(as.formula(paste(i, \"~ AccV + AccML + AccAP\")), data = train,\n                #distribution = \"adaboost\",\n                #method = \"gbm\",\n                #method = \"glmnet\",\n                #method = \"svmPoly\",\n                method = \"nnet\", trace = FALSE,\n                trControl = fitControl,\n                 #preProc = c(\"center\", \"scale\"),\n                 ## This last option is actually one\n                 ## for gbm() that passes through\n                 verbose = FALSE,\n                 #tuneGrid = gbmGrid\n                                 ))\n    \n\n    \n#pred <- predict(model, newdata = test)\n\n#pred_metric <- postResample(test$y, pred)\n    \n#var <- varImp(model,scale = TRUE)\n\n    \n#compare_var <- cbind(compare_var , var)\n\n\n    \n#print(i)\n#print(var, top = 10)\n#print(Sys.time())\n    \n    \n\n    \n    \n    end_time_c <- Sys.time()\n    time_c <- end_time_c - start_time_c\n    \n    print(c(i, time_c))\n}\n\n#summary(model_StartHesitation)\n#summary(model_Turn)\n#summary(model_Walking)\n\n\n\n\n#head(train)\n#head(test)\n\n","metadata":{"execution":{"iopub.status.busy":"2023-04-12T20:26:32.214670Z","iopub.execute_input":"2023-04-12T20:26:32.216130Z","iopub.status.idle":"2023-04-12T20:28:46.621365Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# New model - off ","metadata":{}},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Test models","metadata":{}},{"cell_type":"code","source":"ggplotConfusionMatrix <- function(m){\n  mytitle <- paste(\"Accuracy\", percent_format()(m$overall[1]),\n                   \"Kappa\", percent_format()(m$overall[2]))\n  p <-\n    ggplot(data = as.data.frame(m$table) ,\n           aes(x = Reference, y = Prediction)) +\n    geom_tile(aes(fill = log(Freq)), colour = \"white\") +\n    scale_fill_gradient(low = \"white\", high = \"steelblue\") +\n    geom_text(aes(x = Reference, y = Prediction, label = Freq)) +\n    theme(legend.position = \"none\") +\n    ggtitle(mytitle)\n  return(p)\n}","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred <- predict(model_StartHesitation, test)\ncms <- confusionMatrix(pred, test$StartHesitation)\ncms\n\nggplotConfusionMatrix(cms)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred <- predict(model_Turn, test)\ncmt <- confusionMatrix(pred, test$Turn)\ncmt\n\nggplotConfusionMatrix(cmt)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred <- predict(model_Walking, test)\ncmw <- confusionMatrix(pred, test$Walking)\ncmw\n\nggplotConfusionMatrix(cmw)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model_StartHesitation\nmodel_Turn\nmodel_Walking\n#plot(model_StartHesitation, plotType = \"level\") \n# no grig 0.895, 0.744, 0.917 - 30%\n# grid big 0.895, 0.755, 0.917 - 30%\n# grid small 0.895, 0.754, 0.917 - 30%\n# grid small 0.895, 0.754, 0.917 - 40%\n# grid small 0.895, 0.754, 0.917 - 50%\n\n# no grig 0.895, 0.744, 0.917 - 30% - cv 2\n# no grig 0.895, 0.744, 0.917 - 30% - cv 3\n# no grig 0.895, 0.743, 0.917 - 30% - cv 5\n\n# no grig 0.895, 0.744, 0.917 - 30% - cv 2,  data - 305, 20 \n# no grig 0.910, 0.722, 0.873 - 30% - cv 2,  data - 405, 30 \n# no grig 0.910, 0.724, 0.874 - 20% - cv 2,  data - 405, 30 -250k\n\n\n#adaboost - off\n# no grig 0.895, 0.748, 0.917 - 30% - cv 2\n\n# no grig 0.849, 0.845, 0.999 - 50% - cv 2\n\n\n#plot(model_Turn, plotType = \"level\")\n#plot(model_Walking, plotType = \"level\", col=heat.colors(3))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#plot(model_StartHesitation)\n#plot(model_Turn)\n#plot(model_Walking)\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# LOAD","metadata":{}},{"cell_type":"code","source":"filenames <- list.files(\"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/test\", pattern=\"*.csv\",\n                        full.names = TRUE, recursive = TRUE)\n\ntest_fast <- do.call(rbind, sapply(filenames, read.csv, simplify = FALSE))\ntest_fast$name <- file_path_sans_ext(file_path_sans_ext(basename(row.names(test_fast))))\ntest_fast$Id <- paste0(test_fast$name, \"_\", test_fast$Time)\nrownames(test_fast) <- NULL\nfilenames\n\n\ndf <- aggregate(test_fast$AccV, list(test_fast$name), FUN = mean)\ncolnames(df) <- c('name', 'mean') \n\n\ntest_fast <- merge(x = test_fast, y = df, by = \"name\",\n                                 all.x = TRUE)\n\nhead(test_fast)\ntail(test_fast)\nstr(test_fast)\n\n\n\n#spli\n#head(test_fast)\n#dim(test_fast)\n\n#test_fast %>% filter(mean < -3) -> graf\n#test_fast %>% filter(mean > -3 ) -> graf_defog\n\n\n#dim(graf)\n#head(graf_defog)\n#head(graf_tdcsfog)\n#dim(graf_defog) \n","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Transform test data","metadata":{}},{"cell_type":"code","source":"test_fast$AccV <- ifelse(test_fast$mean < -2 , test_fast$AccV , test_fast$AccV * 9.80665)\ntest_fast$AccML <- ifelse(test_fast$mean < -2 , test_fast$AccML , test_fast$AccML * 9.80665)\ntest_fast$AccAP <- ifelse(test_fast$mean < -2 , test_fast$AccAP , test_fast$AccAP * 9.80665)\n#test_fast$Time <- ifelse(test_fast$mean < -2 , round(test_fast$Time / 128, digits = 2) , test_fast$Time / 100)\n\n#head(test_fast)\n#tail(test_fast)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission = data.frame(Id = character(), StartHesitation = numeric(), Turn = numeric(), Walking = numeric())\n\n\n#str(submission)\n#head(submission)\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#test_defog_ <- test_defog %>% select(-c(Valid, Task))\n#head(test_defog_)\n\n\n\ntest_td <- test_fast\n## ALL FILES HERE\n\nsubmission[nrow(test_td),] <- 0\nsubmission$Id <- test_td$Id\n\ntest_td %>% dim()\nsubmission %>% dim()\ntest_td %>% head()\n\n#submission %>% head()\n#submission %>% tail()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_td[,2:5] <- scale(test_td[,2:5])\nhead(test_td)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Predict ","metadata":{}},{"cell_type":"code","source":"#submission %>% head()\n#submission %>% tail()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission$StartHesitation <- predict(model_StartHesitation, test_td, type = \"prob\")[,-1]\nsubmission$Turn <- predict(model_Turn, test_td, type = \"prob\")[,-1]\nsubmission$Walking <- predict(model_Walking, test_td, type = \"prob\")[,-1]\n\n\n#submission$StartHesitation <- round(submission$StartHesitation, digits = 5)\n#submission$Turn <- round(submission$Turn, digits = 5)\n#submission$Walking <- round(submission$Walking, digits = 5)\n\n\n\nsubmission %>% head()\nsubmission %>% summary()\n\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Clean data submission","metadata":{}},{"cell_type":"code","source":"#submission1 <- submission \n#cut_off <- 0.7","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\n#submission1$StartHesitation <- ifelse(submission1$StartHesitation < cut_off, 0, submission1$StartHesitation)\n#submission1$Turn <- ifelse(submission1$Turn < cut_off, 0, submission1$Turn)\n#submission1$Walking <- ifelse(submission1$Walking < cut_off, 0, submission1$Walking)\n\n#sum(submission1$StartHesitation)\n#sum(submission1$Turn)\n#sum(submission1$Walking)\n\n#file <- as.data.frame(read.csv(\"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/2e75cf4507.csv\"))\n#sum(file$StartHesitation)\n#sum(file$STurn)\n#sum(file$SWalking)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#submission <- submission1 \n\n#sum(submission$StartHesitation)\n#sum(submission$Turn)\n#sum(submission$Walking)\n\n#submission","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Save file","metadata":{}},{"cell_type":"code","source":"write.csv(submission, \"/kaggle/working/submission.csv\", row.names = FALSE)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Graph","metadata":{}},{"cell_type":"code","source":"\n#ggplot(data = submission, aes(x = Id, y = StartHesitation)) +  geom_point()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\n\n#file <- as.data.frame(read.csv(\"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/notype/02ab235146.csv\"))\n#file <- as.data.frame(read.csv(\"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/32d03020a9.csv\"))\n\n\n#files <- list.files(path = \"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/\")\n\n#file <- as.data.frame(read.csv(\n#    paste0(\"/kaggle/input/tlvmc-parkinsons-freezing-gait-prediction/train/defog/\", files[19])))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\n#plot <- file %>% filter(Time > 0, Time < 40000  )\n#plot <- file %>% filter(Time > 20000, Time < 20400 )\n#icol <- plot$Turn\n\n#ggplot(data = plot, aes(x = Time, y = AccV, color = icol)) +  geom_point()\n\n#ggplot(data = plot, aes(x = Time, y = AccML, color = icol)) +  geom_point()\n\n#ggplot(data = plot, aes(x = Time, y = AccAP, color = icol)) +  geom_point()\n\n\n#ggplot(data = plot, aes(x = Time, y = StartHesitation, color = icol)) + geom_point()\n\n#ggplot(data = plot, aes(x = Time, y = Turn, color = icol)) + geom_point()\n\n#ggplot(data = plot, aes(x = Time, y = Walking, color = icol)) + geom_point()\n\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Time","metadata":{}},{"cell_type":"code","source":"\n\nend_time <- Sys.time()\nelapsed_time <- end_time - start_time\nprint (elapsed_time)\n\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}