Двоичные и числовые предикторы для cv.glmnet (LASSO) - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь провести перекрестную проверку, чтобы выяснить значение штрафа для моей регрессии LASSO. Для этого я преобразовываю свой фрейм данных в матрицы, один с переменной отклика и один со всеми предикторами.

Затем я использую следующее: # Создание матриц из моего собственного фрейма данных Y <- df%>% select (Response)%>% scale (center = FALSE, scale = FALSE)%>% data.matrix () X <- df%>% select (-Response)%>% data.matrix ()

# Perform 10-fold cross-validation to select lambda
lambdas_to_try <- 10^seq(-3, 5, length.out = 100)

# Setting alpha = 1 implements lasso regression
lasso_cv <- cv.glmnet(X, Y, alpha = 1, lambda = lambdas_to_try, standardize = FALSE, nfolds = 10)

Однако при этом я получаю ошибку:

Error in y - predmat : non-numeric argument to binary operator

Полагаю, это потому, что это должны быть данные тех же типов? ? И в моем случае у меня есть по крайней мере один столбец предикторов, которые являются двоичными. Иногда я мог бы даже быть категоричным.

Так что это может быть даже решено. Мол, мои предикторы имеют двоичные данные, поэтому я не могу просто удалить их. Есть ли способ обойти это, или я что-то неправильно понимаю в вычислении правильного штрафа?

РЕДАКТИРОВАТЬ:

Так что я просто попытался удалить двоичный предиктор, и дажес этим я получаю ту же ошибку. Ммм ...

...