如何解决如何使用 Boruta 输出快速有效地从 R 中的 glm 中排除变量
我的数据框中有 96 个变量。我想用 Boruta()
函数发现的重要变量来拟合逻辑回归。如果只有少数不重要的变量,那么做这样的事情很容易:
glm <- glm(class ~ . - X1 - X2 - X3,data = df,family = binomial)
但是,如果我有 40 个不重要的变量,这将变得不可行。我想知道如何提取 R 中所有不重要变量的名称,以及是否可以执行以下操作:
glm <- glm(class ~ . -unimportant,family = binomial)
其中 unimportant 是不重要变量的向量。我试着像这样提取这些不重要的变量:
unimportant <- boruta_output$finalDecision[boruta_output$finalDecision == "Rejected"]
但这给了我三个级别的因素。
我的问题是:
我可以使用向量从模型中排除变量吗?如果是这样,我如何才能以可以同时排除许多变量的方式从 boruta 输出中提取不重要的变量?
有没有更好的方法来做到这一点?
我试图在网上找到一种方法来做到这一点,但我只看到了排除一些变量的例子,就像我在第一个例子中所做的那样。
解决方法
Boruta::Boruta
中有很多示例,其中一个示例展示了如何在使用 randomForest
算法提取参数后拟合 Boruto
。示例如下所示:
library(mlbench); data(Ozone)
library(randomForest)
na.omit(Ozone)->ozo
Boruta(V4~.,data=ozo,doTrace=2)->Bor.ozo
cat('Random forest run on all attributes:\n')
print(randomForest(V4~.,data=ozo))
cat('Random forest run only on confirmed attributes:\n')
print(randomForest(ozo[,getSelectedAttributes(Bor.ozo)],ozo$V4))
我不会提取应该排除的变量,而是继续这个例子并根据算法提取应该包括的变量:
glm(class ~ .,data = df[,c('class',getSelectedAttributes(boruto_output))])
注意:我无法测试上述方法,因为没有包含数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。