diff --git a/ccn2019-elasticnet.R b/ccn2019-elasticnet.R new file mode 100644 index 0000000..7eea931 --- /dev/null +++ b/ccn2019-elasticnet.R @@ -0,0 +1,52 @@ +library(tidyverse) +library(caret) +library(here) +library(inspectdf) +library(glmnet) +library(ROSE) + +rm(seqs) +load(here("notebooks/data/nback_seqs.Rd")) +seqs <- seqs %>% drop_na(rt, correct, tl,sl) + +f <- correct ~ n + stimulus + stimulus_type + t + s + v + l + vl + sl + tl + ul + ll + +set.seed(654321) + +train.indices <- createDataPartition(seqs[[toString(f[[2]])]], p = .8, list =FALSE) + +seqs.train.balanced <- seqs[train.indices,] +seqs.train <- ROSE(f, data = seqs.train.balanced, N=100)$data + +seqs.train.x <- model.matrix(f, seqs.train)[,-1] +seqs.train.y <- seqs.train[[toString(f[[2]])]] + +seqs.test <- seqs[-train.indices,] +seqs.test.x <- model.matrix(f, seqs.test)[,-1] +seqs.test.observed_y <- seqs.test[[toString(f[[2]])]] + + +set.seed(10) + +ctrl <- trainControl( + method = "cv", + number = 10, + classProbs = T, + summaryFunction = twoClassSummary +) + +grid <- expand.grid( + alpha = seq(0,1,length=10), + lambda = seq(0.0001, 0.1, length=10) +) + +model <- train(seqs.train.x, seqs.train.y, + method = "glmnet", + preProcess = c("nzv","center","scale"), # or c("knnImpute"), + tuneGrid = grid, + trControl = ctrl) + +model +plot(varImp(model, useModel = F)) +plot(model) +max(model$results$ROC) diff --git a/ccn2019-elasticnet.R b/ccn2019-elasticnet.R new file mode 100644 index 0000000..7eea931 --- /dev/null +++ b/ccn2019-elasticnet.R @@ -0,0 +1,52 @@ +library(tidyverse) +library(caret) +library(here) +library(inspectdf) +library(glmnet) +library(ROSE) + +rm(seqs) +load(here("notebooks/data/nback_seqs.Rd")) +seqs <- seqs %>% drop_na(rt, correct, tl,sl) + +f <- correct ~ n + stimulus + stimulus_type + t + s + v + l + vl + sl + tl + ul + ll + +set.seed(654321) + +train.indices <- createDataPartition(seqs[[toString(f[[2]])]], p = .8, list =FALSE) + +seqs.train.balanced <- seqs[train.indices,] +seqs.train <- ROSE(f, data = seqs.train.balanced, N=100)$data + +seqs.train.x <- model.matrix(f, seqs.train)[,-1] +seqs.train.y <- seqs.train[[toString(f[[2]])]] + +seqs.test <- seqs[-train.indices,] +seqs.test.x <- model.matrix(f, seqs.test)[,-1] +seqs.test.observed_y <- seqs.test[[toString(f[[2]])]] + + +set.seed(10) + +ctrl <- trainControl( + method = "cv", + number = 10, + classProbs = T, + summaryFunction = twoClassSummary +) + +grid <- expand.grid( + alpha = seq(0,1,length=10), + lambda = seq(0.0001, 0.1, length=10) +) + +model <- train(seqs.train.x, seqs.train.y, + method = "glmnet", + preProcess = c("nzv","center","scale"), # or c("knnImpute"), + tuneGrid = grid, + trControl = ctrl) + +model +plot(varImp(model, useModel = F)) +plot(model) +max(model$results$ROC) diff --git a/ccn2019-featsel.R b/ccn2019-featsel.R index d59cd52..ae5dc98 100644 --- a/ccn2019-featsel.R +++ b/ccn2019-featsel.R @@ -26,14 +26,13 @@ seqs.test.observed_y <- seqs.test[[toString(f[[2]])]] -set.seed(10) - ctrl <- rfeControl(functions = lrFuncs, method = "cv", - number = 5, + number = 10, verbose = T) rmProfile <- rfe(seqs.train.x, seqs.train.y, + preProcess = c("nzv"), rfeControl = ctrl) rmProfile