Могу ли я использовать glmnet с кареткой и разреженными матрицами?

Для меня одним из больших преимуществ использования glmnet является возможность работать с разреженными матрицами напрямую, без необходимости их преобразования. Сообщения здесь, похоже, указывают на то, что функция обучения каретки может принимать только кадры данных для обучающего набора, и ?caret::train предлагает то же самое. Так ли это на самом деле?


person Patrick McCarthy    schedule 21.07.2014    source источник


Ответы (2)


Это определенно было правдой в прошлом, и в настоящее время данные предиктора будут преобразованы в фрейм данных. Однако некоторые недавние изменения в пакете, вероятно, позволят поддерживать разреженные матричные объекты.

Я добавил это и рассмотрю его.

Максимум

person topepo    schedule 21.07.2014
comment
@topepo, быстро ответьте, пожалуйста. мы можем сделать это сегодня? спасибо!! - person ℕʘʘḆḽḘ; 09.11.2016

@Noobie Это работает с glmnet, например:

library(glmnet)
set.seed(1)
X <- sparseMatrix(i=sample(1:20,20), j=sample(1:20,20), x=sample(1:100,20), 
                                       dims=c(20,20)) # some random sparse training data
X
# [1,] .  .  . 64  .  .  . .  . .  .  .  .  .  .  .  .  .  .  .
# [2,] .  .  .  .  .  .  . .  . .  .  .  .  . 98  .  .  .  .  .
# [3,] .  .  .  .  .  .  . .  . .  .  . 43  .  .  .  .  .  .  .
# [4,] .  .  .  .  .  .  . .  . .  .  .  .  .  .  .  .  .  . 51
# [5,] .  .  .  .  .  .  . .  . 7  .  .  .  .  .  .  .  .  .  .
# [6,] .  .  .  .  .  .  . .  . .  .  .  .  .  .  .  .  . 83  .
# [7,] .  .  .  .  .  .  . 9  . .  .  .  .  .  .  .  .  .  .  .
# [8,] .  .  .  . 65  .  . .  . .  .  .  .  .  .  .  .  .  .  .
# [9,] .  .  .  .  .  .  . .  . .  .  .  .  .  . 45  .  .  .  .
#[10,] . 22  .  .  .  .  . .  . .  .  .  .  .  .  .  .  .  .  .
#[11,] .  .  .  .  .  .  . .  . .  . 77  .  .  .  .  .  .  .  .
#[12,] .  .  .  .  .  .  . . 27 .  .  .  .  .  .  .  .  .  .  .
#[13,] .  .  .  .  .  .  . .  . .  .  .  .  .  .  . 33  .  .  .
#[14,] .  .  .  .  . 75  . .  . .  .  .  .  .  .  .  .  .  .  .
#[15,] 3  .  .  .  .  .  . .  . .  .  .  .  .  .  .  .  .  .  .
#[16,] .  . 54  .  .  .  . .  . .  .  .  .  .  .  .  .  .  .  .
#[17,] .  .  .  .  .  .  . .  . .  .  .  . 44  .  .  .  .  .  .
#[18,] .  .  .  .  .  . 55 .  . .  .  .  .  .  .  .  .  .  .  .
#[19,] .  .  .  .  .  .  . .  . . 68  .  .  .  .  .  .  .  .  .
#[20,] .  .  .  .  .  .  . .  . .  .  .  .  .  .  .  . 39  .  .

y <- as.factor(sample(0:1, 20, replace=TRUE))

enet.fit <- glmnet(X, y, family='binomial')

Xtest <- sparseMatrix(i=sample(1:10,10), j=sample(1:20,10), x=sample(1:100,10), 
                                     dims=c(10,20)) # some random sparse test data

# [1,] .  . . .  . 45  . . .  . .  .  .  .  . . .  . . .
# [2,] .  . . .  .  .  . . .  . .  .  .  .  . . . 21 . .
# [3,] .  . . .  .  .  . . .  . .  .  .  . 97 . .  . . .
# [4,] .  . . .  .  .  . . .  . . 27  .  .  . . .  . . .
# [5,] .  . . . 66  .  . . .  . .  .  .  .  . . .  . . .
# [6,] .  . . .  .  .  . . .  . .  .  . 55  . . .  . . .
# [7,] . 35 . .  .  .  . . .  . .  .  .  .  . . .  . . .
# [8,] .  . . .  .  .  . . . 86 .  .  .  .  . . .  . . .
# [9,] .  . . .  .  . 13 . .  . .  .  .  .  . . .  . . .
# [10,] .  . . .  .  .  . . .  . .  . 61  .  . . .  . . .

predict(enet.fit, newx=Xtest, type='class',s=0.01)
#      1
# [1,] "0"
# [2,] "1"
# [3,] "0"
# [4,] "0"
# [5,] "1"
# [6,] "1"
# [7,] "1"
# [8,] "1"
# [9,] "0"
#[10,] "0"
person Sandipan Dey    schedule 28.03.2017