Большая матрица для запуска в cv.glmnet () для полиномиальной классификации - PullRequest
0 голосов
/ 23 октября 2018

Я работаю над большой матрицей с количеством выборок N = 40 и характеристиками, P = 7130.Я пытаюсь установить cv.glmnet() для гребня, но при этом получаю ошибку.
Размеры набора данных: (40,7130)
Код для cv.glmnet () выглядит следующим образом:

ridge2_cv <- cv.glmnet(x, y,
                   ## type.measure: loss to use for cross-validation.
                   type.measure = "deviance",
                   ## K = 10 is the default.
                   nfold = 10,
                   ## Multinomial regression
                   family = "multinomial",
                   ## ‘alpha = 1’ is the lasso penalty, and ‘alpha = 0’ the ridge penalty.
                   alpha = 0)

Здесь x - большая матрица с 285160 элементами.y - это мультиклассовая переменная ответа размером 40
Я продолжаю получать эту ошибку, когда запускаю вышеуказанную функцию.

Error in cbind2(1, newx) %*% (nbeta[[i]]) : invalid class 'NA' to dup_mMatrix_as_dgeMatrix In addition: Warning messages: 1: In lognet(x, is.sparse, ix, jx, y, weights, offset, alpha, nobs, : one multinomial or binomial class has fewer than 8 observations; dangerous ground 2: In lognet(x, is.sparse, ix, jx, y, weights, offset, alpha, nobs, : one multinomial or binomial class has fewer than 8 observations; dangerous ground

1 Ответ

0 голосов
/ 23 октября 2018

Можете ли вы попробовать использовать data.matrix () для матрицы вместо as.matrix?Я помню, что пробовал что-то подобное.

ridge2_cv <- cv.glmnet(data.matrix(x), y,
               ## type.measure: loss to use for cross-validation.
               type.measure = "deviance",
               ## K = 10 is the default.
               nfold = 10,
               ## Multinomial regression
               family = "multinomial",
               ## ‘alpha = 1’ is the lasso penalty, and ‘alpha = 0’ the ridge penalty.
               alpha = 0)
...