根据R

时间:2019-05-13 02:20:31

标签: r r-caret feature-selection

在R中,我有一个如下的逻辑回归模型

train_control <- trainControl(method = "cv", number = 3)

logit_Model <- train(result~., data=df,
           trControl = train_control,
           method = "glm",
           family=binomial(link="logit"))

calculatedVarImp <- varImp(logit_Model, scale = FALSE)

我使用通过同一代码运行的多个数据集,因此变量重要性随每个数据集而变化。是否有办法获得总体重要性小于n(例如1)的变量的名称,所以我可以自动删除这些变量并重新运行模型。

通过设置'overall'值,我无法从'calculatedVarImp'变量中获取信息

lowVarImp <- subset(calculatedVarImp , importance$Overall <1)

还有,还有更好的选择变量的方法吗?

预先感谢

1 个答案:

答案 0 :(得分:4)

您正在使用caret软件包。不确定是否知道这一点,但是caret有一种使用Akaike信息准则:glmStepAIC进行逐步逻辑回归的方法。

因此,它迭代地为每个预测变量子集训练一个模型,并停止在具有最低AIC的预测变量上。


train_control <- trainControl(method = "cv", number = 3)

logit_Model <- train(y~., data= train_data,
                     trControl = train_control,
                     method = "glmStepAIC",
                     family=binomial(link="logit"),
                     na.action = na.omit)

logit_Model$finalModel

这是自动完成的,但值得一读有关此方法的缺点的答案:

See Also

相关问题