gpt4 book ai didi

r - 在R中的glmnet中提取非零系数

转载 作者:行者123 更新时间:2023-11-30 09:31:47 26 4
gpt4 key购买 nike

我正在做套索逻辑回归。我使用 cv.glmnet 来获取非零系数。它似乎有效,即我确实得到了一些非零系数,其余的系数为零。但是,当我使用 coef 函数打印所有系数时,它会给出所有系数的列表。有没有办法提取不为零的系数及其名称。我所做的代码是:

cv.lasso = cv.glmnet(x_train,y_train, alpha = 0.6, family = "binomial")
coef(cv.lasso, s=cv.lasso$lambda.1se)

当我使用 coef 时,我得到以下输出:

4797 x 1 sparse Matrix of class "dgCMatrix"

1

(Intercept) -1.845702

sampleid.10 .
sampleid.1008 .

我想提取非零系数的名称和值。我怎样才能做到这一点?

最佳答案

您可以使用矩阵表示法。

library(MASS)
library(glmnet)
set.seed(8675309)
### simulate covariates from inepedent normals
xx <- mvrnorm(100, rep(0, 100), diag(1, 100))
### simulate coefficients first 50 from beta second 50 0 => spurious features
my_beta <- c(runif(50, -2, 2), rep(0, 50))
## simulate responses
yy <- rbinom(100, 1, plogis(xx %*% my_beta))

## do your glmnet
reg <- cv.glmnet(x = xx, y = yy, alpha = 0.5, family = 'binomial')


rownames(coef(reg, s = 'lambda.min'))[coef(reg, s = 'lambda.min')[,1]!= 0] ### returns nonzero coefs

关于r - 在R中的glmnet中提取非零系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54984540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com