Я пытаюсь провести перекрестную проверку, чтобы выяснить значение штрафа для моей регрессии 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
Полагаю, это потому, что это должны быть данные тех же типов? ? И в моем случае у меня есть по крайней мере один столбец предикторов, которые являются двоичными. Иногда я мог бы даже быть категоричным.
Так что это может быть даже решено. Мол, мои предикторы имеют двоичные данные, поэтому я не могу просто удалить их. Есть ли способ обойти это, или я что-то неправильно понимаю в вычислении правильного штрафа?
РЕДАКТИРОВАТЬ:
Так что я просто попытался удалить двоичный предиктор, и дажес этим я получаю ту же ошибку. Ммм ...