0

I've trained a glmnet model with caret

pen.params = expand.grid(lambda = exp(seq(-3,3,0.05)) , alpha = 1 )

model.penalized = train(y~.,
                        data = d.train,
                        trControl = fitControl,
                        tuneGrid = pen.params,
                        method = 'glmnet'
                        )

I can plot the coefficients using a variety of tools, but I'd like to have them in a dataframe. I've tried to use broom to extract the coefficients using thetidy, but this only gives me the non-zero coefficients.

Is there an easy way to extract coefficients and penalty parameter from the model and have them as columns in a dataframe?

Demetri Pananos
  • 6,770
  • 9
  • 42
  • 73

1 Answers1

1
dfCoef <- data.frame(lambda=model.penalized$finalModel[['lambda']],
          as.matrix(t(model.penalized$finalModel[['beta']])))
dfCoef[1:10,]

#           lambda          X2           X3          X4         X5
# s0  0.1608367514 0.000000000  0.000000000 0.000000000 0.00000000
# s1  0.1465484577 0.000000000  0.000000000 0.000000000 0.01347397
# s2  0.1335294966 0.000000000  0.000000000 0.000000000 0.02575094
# s3  0.1216671042 0.000000000  0.000000000 0.000000000 0.03693727
# s4  0.1108585340 0.000000000  0.000000000 0.000000000 0.04712983
# s5  0.1010101674 0.000000000  0.000000000 0.000000000 0.05641691
# s6  0.0920367025 0.000000000  0.000000000 0.000000000 0.06487896
# s7  0.0838604155 0.000000000  0.000000000 0.000000000 0.07258926
# s8  0.0764104873 0.000000000 -0.006189269 0.000000000 0.07905622
# s9  0.0696223902 0.000000000 -0.011967900 0.000000000 0.08493612
# s10 0.0634373290 0.003340502 -0.016868476 0.000000000 0.09006299
# ...
Marco Sandri
  • 23,289
  • 7
  • 54
  • 58