从 varImp 中提取预测变量名称

Posted

技术标签:

【中文标题】从 varImp 中提取预测变量名称【英文标题】:extract predictor names from varImp 【发布时间】:2014-08-16 06:29:56 【问题描述】:

我正在使用 caret 包来运行 gbm 模型。模型运行后,我使用 varImp 函数提取重要预测变量列表(显示前 20 个)。但是,我想在字符列表中捕获预测变量的名称。我怎么做?从 varImp 返回的对象似乎没有列出预测器名称的属性 - 只有变量重要性。这是一个示例:

gbmModel= train(target ~. , data = trainData, ....other params )
varimp = varImp(gbmModel, scale=TRUE)
str(varimp)
List of 3
 $ importance:'data.frame': 77 obs. of  1 variable:
..$ Overall: num [1:77] 6.63 0 5.35 2.01 0 ...
$ model     : chr "gbm"
$ calledFrom: chr "varImp"
- attr(*, "class")= chr "varImp.train"
## Display the important variables

varimp

gbm variable importance

 only 20 most important variables shown (out of 77)

           Overall
Var126     100.000
Var189      99.647
Var113      41.994
... And so on

我想要一个类似 ("Var126", "Var189", "Var113" ...) 的列表

提前致谢,

【问题讨论】:

rownames(varimp$importance) 怎么样?否则,请使用测试数据创建reproducible example,以便我们可以运行与您相同的代码来测试可能的解决方案。 varImp() 来自哪里? (不是来自 gbm,但也许您正在使用 [unstated] caret 包?) varImp 是 caret 包中的函数。 rownames(varimp$importance 似乎可以解决问题。谢谢 【参考方案1】:
varImp(gbmModel, scale = TRUE)$importance

返回所有变量

【讨论】:

【参考方案2】:

从您提供的输出结构看来,

rownames(varimp$importance)

将返回您所追求的值。

【讨论】:

just varimp 仅返回前 20 个特征,如何仅获取前 20 个预测变量的名称? 有人知道如何获取预测变量的名称而不是对应的列号吗? @parth rownames(varImp(gbmModel)$importance)[1:20]

以上是关于从 varImp 中提取预测变量名称的主要内容,如果未能解决你的问题,请参考以下文章

如何从 R 中的 netCDF 文件中提取变量名?

从文件名中提取变量名[重复]

从 ctree 对象中提取预测变量

H2O R 变量重要性截断列表

将具有解构赋值语法的字段提取到特定变量名

利用多元线性回归法,从大量数据中提取五个因变量来预测一个自变量—Jason niu