我有一个来自tidymodels rand_forest函数的ranger对象:
rf <- rand_forest(mode = "regression", trees = 1000) %>% fit(pay_rate ~ age+profession)
我想得到每个变量的特征重要性(我有比这个例子更多的(。我尝试过rf$variable.importance
或importance(rf)
之类的函数,但前者返回NULL
,而后者不存在。我尝试使用vip
包,但这对ranger对象不起作用。如何从该对象中提取特征重要性?
为ranger设置引擎时,需要添加importance = "impurity"
。这将提供可变的重要性分数。设置后,可以使用extract_fit_parsnip
和vip
来绘制变量重要性。
小示例:
library(tidymodels)
library(vip)
rf_mod <- rand_forest(mode = "regression", trees = 100) %>%
set_engine("ranger", importance = "impurity")
rf_recipe <-
recipe(mpg ~ ., data = mtcars)
rf_workflow <-
workflow() %>%
add_model(rf_mod) %>%
add_recipe(rf_recipe)
rf_workflow %>%
fit(mtcars) %>%
extract_fit_parsnip() %>%
vip(num_features = 10)
更多信息可在花絮模型入门指南中获得