具有ranger的可变重要性

具有ranger的可变重要性,r,machine-learning,random-forest,r-caret,R,Machine Learning,Random Forest,R Caret,我用插入符号训练了一个随机森林 fit <- train( y ~ x1 + x2 ,data = total_set ,method = "ranger" ,trControl = trainControl(method="cv", number = 5, allowParallel = TRUE, verbose = TRUE) ,tuneGrid = expand.grid(mtry = c(4,5,6)) ,importance =

我用插入符号训练了一个随机森林

fit <- train(
    y ~ x1 + x2
    ,data = total_set
    ,method = "ranger"
    ,trControl = trainControl(method="cv", number = 5, allowParallel = TRUE, verbose = TRUE)
    ,tuneGrid = expand.grid(mtry = c(4,5,6))
    ,importance = 'impurity'
)
你知道我能不能得到它吗

谢谢。

varImp(fit)
将为您购买


为了弄清楚这一点,我查看了
names(fit)
,这使我找到了
names(fit$modelnfo)
——然后您将看到
varImp
作为选项之一。

根据@fmalaussena

set.seed(123)
ctrl <- trainControl(method = 'cv', 
                     number = 10,
                     classProbs = TRUE,
                     savePredictions = TRUE,
                     verboseIter = TRUE)

rfFit <- train(Species ~ ., 
               data = iris, 
               method = "ranger",
               importance = "permutation", #***
               trControl = ctrl,
               verbose = T)
set.seed(123)

ctrl对于“ranger”软件包,您可以使用

fit$variable.importance
作为旁注,您可以使用str()看到模型的所有可用输出


是的,同时我也在潜入插入符号的文档中找到了它。不过,感谢您提供了查找信息的有用方法!事实证明,
varImp()
对于大多数使用caret的
train()
训练的模型来说是获得可变重要性的方法。不过,请注意未来的用户:我不是100%确定,也没有时间检查,但似乎有必要将
重要性='杂质'
(我想
重要性='排列'
也会起作用)作为
train()中的参数传递给
train()
,以便能够使用
varImp()
。另一个注意事项:如果您使用
ranger
训练您的模型,但不使用
插入符号
,那么
重要性(适合)
将是获得可变重要性的正确方法。如上所述,我认为参数
重要性='杂质'
(或'permutation')应该在
train()
中,奇怪的是,它对我不起作用。没有可用的重要值。。。嗯,这对我不管用。该函数存在,但它没有返回可用的重要值?只是为了清楚起见,
ranger
的默认值是不计算
重要值
。您必须明确指定
重要性='杂质'
重要性='排列'
,才能使这些方法中的任何一种起作用,即使您使用的是
train
fit$variable.importance
str(fit)