从 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)
将返回您所追求的值。
【讨论】:
justvarimp
仅返回前 20 个特征,如何仅获取前 20 个预测变量的名称?
有人知道如何获取预测变量的名称而不是对应的列号吗?
@parth rownames(varImp(gbmModel)$importance)[1:20]
以上是关于从 varImp 中提取预测变量名称的主要内容,如果未能解决你的问题,请参考以下文章