Sto usando seguente codice con glmnet:Come coefficienti glmnet a 'migliore' lambda
> library(glmnet)
> fit = glmnet(as.matrix(mtcars[-1]), mtcars[,1])
> plot(fit, xvar='lambda')
Tuttavia, voglio stampare i coefficienti nella migliore delle ipotesi Lambda, come si è fatto in cresta regressione. Vedo la seguente struttura di adattamento:
> str(fit)
List of 12
$ a0 : Named num [1:79] 20.1 21.6 23.2 24.7 26 ...
..- attr(*, "names")= chr [1:79] "s0" "s1" "s2" "s3" ...
$ beta :Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
.. [email protected] i : int [1:561] 0 4 0 4 0 4 0 4 0 4 ...
.. [email protected] p : int [1:80] 0 0 2 4 6 8 10 12 14 16 ...
.. [email protected] Dim : int [1:2] 10 79
.. [email protected] Dimnames:List of 2
.. .. ..$ : chr [1:10] "cyl" "disp" "hp" "drat" ...
.. .. ..$ : chr [1:79] "s0" "s1" "s2" "s3" ...
.. [email protected] x : num [1:561] -0.0119 -0.4578 -0.1448 -0.7006 -0.2659 ...
.. [email protected] factors : list()
$ df : int [1:79] 0 2 2 2 2 2 2 2 2 3 ...
$ dim : int [1:2] 10 79
$ lambda : num [1:79] 5.15 4.69 4.27 3.89 3.55 ...
$ dev.ratio: num [1:79] 0 0.129 0.248 0.347 0.429 ...
$ nulldev : num 1126
$ npasses : int 1226
$ jerr : int 0
$ offset : logi FALSE
$ call : language glmnet(x = as.matrix(mtcars[-1]), y = mtcars[, 1])
$ nobs : int 32
- attr(*, "class")= chr [1:2] "elnet" "glmnet"
Ma non sono in grado di ottenere il migliore Lambda e i coefficienti corrispondenti. Grazie per l'aiuto.
Si sta utilizzando la sequenza lambda predefinita, che viene costruita utilizzando 'nlambda, lambda.min.ratio'. Il consiglio che ho sempre sentito è stato quello di passare la tua sequenza lambda, ad es. 'lambda = 10^seq (10, -15,1/3)' o simile. – smci
@smci, hai un errore di battitura nel tuo esempio. Il segno dovrebbe essere sul parametro from ad es. 'lambda = 10^seq (da = -10, a = 15, di = 1/3)' Il registro – Faris