gpt4 book ai didi

r - 如何自定义包 "randomForest"生成的重要性图

转载 作者:行者123 更新时间:2023-12-05 00:59:50 25 4
gpt4 key购买 nike

重要性图:

enter image description here

我想将 y 轴文本向右对齐,并且还想根据不同的变量组为变量着色。例如 Limonene 和 Valencane,a-Selinene 和 g-Selinen 分别属于同一组。

但我在 "randomForest"包中找不到任何用于自定义绘图的代码。您对定制有什么建议吗?谢谢!

最佳答案

下面是一个工作示例:

你需要创建你想要的分组,然后使用 ggplotgeom_bar

set.seed(4543)
data(mtcars)

library(randomForest)
mtcars.rf <- randomForest(mpg ~ ., data=mtcars, ntree=1000, keep.forest=FALSE,
importance=TRUE)
imp <- varImpPlot(mtcars.rf) # let's save the varImp object

# this part just creates the data.frame for the plot part
library(dplyr)
imp <- as.data.frame(imp)
imp$varnames <- rownames(imp) # row names to column
rownames(imp) <- NULL
imp$var_categ <- rep(1:2, 5) # random var category

# this is the plot part, be sure to use reorder with the correct measure name
library(ggplot2)
ggplot(imp, aes(x=reorder(varnames, IncNodePurity), weight=IncNodePurity, fill=as.factor(var_categ))) +
geom_bar() +
scale_fill_discrete(name="Variable Group") +
ylab("IncNodePurity") +
xlab("Variable Name")

您可以对其他重要性度量执行相同的操作,只需相应地更改绘图部分(weight = %IncMSE)。

enter image description here

根据 OP 答案更新:

ggplot(imp, aes(x=reorder(varnames, IncNodePurity), y=IncNodePurity, color=as.factor(var_categ))) + 
geom_point() +
geom_segment(aes(x=varnames,xend=varnames,y=0,yend=IncNodePurity)) +
scale_color_discrete(name="Variable Group") +
ylab("IncNodePurity") +
xlab("Variable Name") +
coord_flip()

enter image description here

关于r - 如何自定义包 "randomForest"生成的重要性图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52200095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com