我想提取 glmnet 生成的模型系数并从中创建 SQL 查询。函数coef(cv.glmnet.fit)
产生一个 ' dgCMatrix
' 目的。当我使用 as.matrix
将其转换为矩阵时,变量名丢失,只留下系数值。
我知道可以在屏幕上打印系数,但是是否可以将名称写入数据框?
有人可以协助提取这些名称吗?
最佳答案
更新:
我的答案的前两条评论都是正确的。我将答案保留在线条下方,仅供后代使用。
以下答案很简短,它可以工作并且不需要任何其他包:
tmp_coeffs <- coef(cv.glmnet.fit, s = "lambda.min")
data.frame(name = tmp_coeffs@Dimnames[[1]][tmp_coeffs@i + 1], coefficient = tmp_coeffs@x)
+1 的原因是
@i
拦截的方法索引从 0 开始,但 @Dimnames[[1]]
从 1 开始。旧答案:(仅供后代使用)试试这些行:
非零系数:
coef(cv.glmnet.fit, s = "lambda.min")[which(coef(cv.glmnet.fit, s = "lambda.min") != 0)]
选择的功能:
colnames(regression_data)[which(coef(cv.glmnet.fit, s = "lambda.min") != 0)]
然后将它们放在一起作为数据框是直截了当的,但是如果您也想要那部分代码,请告诉我。
关于r - 从 glmnet 中提取系数变量名称到 data.frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27801130/