Caret 包问题中的 Train() 方法中的重要性图

问题描述 投票:0回答:1

我使用以下代码制作了一个模型。我的变量中有一个分类变量,称为“ot_soilTextu”。

rf_final <- caret::train(BULK_DENSITY ~ forest_210 + legumes_158 + corn_147 + bio3 + 
                           ot_soilTextu + grass_122 + mrvbf + bio5 + bio15 + bio9 + 
                           grav_1st_1 + bio18 + deme2000 + grav_1st_2,
                         method = "rf",
                         data=cq,
                         tuneGrid = expand.grid(mtry = rf_CV$bestTune$mtry), 
                         trControl = trainControl(method = "none"), 
                         importance = TRUE)

然后,我使用以下代码制作了重要性图。

imp <- varImp(rf_final)
plot(imp, main="BD: 14V ",xlab = list(font=1, cex = 1.25), 
     scales = list(x = list(font=1,cex=1),y=list(font=1,cex=1)))

重要性图显示了分类变量的所有分割,这不好。我只需要查看 14 个变量的重要性,而不是添加所有分类变量的分割。有没有办法不用写额外的代码就可以解决这个问题呢? 这是重要性图: enter image description here

r model caret
1个回答
0
投票

您可以在运行

caret::train
函数之前将分类变量转换为数字

cq$ot_soilTextu <- as.numeric(cq$ot_soilTextu) 

然后你可以运行

caret::train
只得到14个变量的重要性。

© www.soinside.com 2019 - 2024. All rights reserved.