我想提取glmnet生成的模型系数并从中创建一个SQL查询.该函数 coef(cv.glmnet.fit) 产生一个' dgCMatrix'对象.当我使用时将其转换为矩阵时as.matrix,变量名称将丢失,只留下系数值.
我知道可以在屏幕上打印系数,但是可以将名称写入数据框吗?
任何人都可以帮助提取这些名字吗?
Meh*_*ian 24
更新: 我的答案的前两个评论都是正确的.我为后代保留了答案.
以下答案很简短,有效,不需要任何其他包:
tmp_coeffs <- coef(cv.glmnet.fit, s = "lambda.min")
data.frame(name = tmp_coeffs@Dimnames[[1]][tmp_coeffs@i + 1], coefficient = tmp_coeffs@x)
Run Code Online (Sandbox Code Playgroud)
+1的原因是@i方法从0开始截取,但@Dimnames [[1]]从1开始.
老答案:(仅为子孙后代保留) 尝试这些方法:
非零系数:
coef(cv.glmnet.fit, s = "lambda.min")[which(coef(cv.glmnet.fit, s = "lambda.min") != 0)]
Run Code Online (Sandbox Code Playgroud)
选择的功能:
colnames(regression_data)[which(coef(cv.glmnet.fit, s = "lambda.min") != 0)]
Run Code Online (Sandbox Code Playgroud)
然后将它们作为数据帧放在一起是很明确的,但是如果你想要那部分代码,请告诉我.
这些名称应该是可访问的dimnames(coef(cv.glmnet.fit))[[1]],因此以下内容应将系数名称和值都放入data.frame:
data.frame(coef.name = dimnames(coef(GLMNET))[[1]], coef.value = matrix(coef(GLMNET)))
| 归档时间: |
|
| 查看次数: |
28164 次 |
| 最近记录: |