Я использую glmnet для выбора функций полиномиальной и перекрестной проверки. Все хорошо, но с чуть менее 400 предикторами и 4 уровнями вывод становится немного беспорядочным.
X <- matrix(rnorm(350000),nrow=1000,ncol=350)
colnames(X) <- sample(LETTERS,350,TRUE)
Y <- factor(sample(LETTERS[1:5],1000,TRUE),levels =LETTERS[1:5])
out.cvfit <- cv.glmnet(x=X ,y=Y,standardize=TRUE,family="multinomial",parallel = TRUE,type.measure = "class")
Итак, я получаю такой вывод:
coef.cv.glmnet(out.cvfit,"lambda.1se")
...
$D
351 x 1 sparse Matrix of class "dgCMatrix"
1
(Intercept) 0.06770556
F .
L .
B .
W .
V .
W .
G .
X .
G .
A .
G .
V .
Q .
T .
...
Немного надуманный пример, так как все равно нулю, так как структуры нет, но суть вы поняли.
Хорошо, это становится очень громоздким для просмотра на нескольких уровнях и составления сводок извлеченных предикторов. Итак, есть ли способ извлечь из разреженной матрицы только ненулевые предикторы?