r - 如何从 R 的部分依赖图中选择一个图?

标签 r random-forest

这是部分依赖图的代码。我为此使用示例数据。首先,我做了一个随机森林模型。然后我做了一个部分依赖图。

rm(list = ls())

library(tidyverse)
library(mlbench)
library(randomForest)
library(caret)
library(edarf)

data("Sonar")
df<-Sonar
rm(Sonar)

# Clean up variable names (becuz I'm a bit OCD)
df <- df %>% rename(V01 = V1, V02 = V2, V03 = V3, V04 = V4, 
                    V05 = V5, V06 = V6, V07 = V7, V08 = V8,
                    V09 = V9)
# Get minimum class frequency
min <- min(table(df$Class))

set.seed(223)
df_rf <- df %>% na.omit()

fit_rf <- randomForest(data = df_rf, 
                       Class ~ .,
                       ntree = 500,
                       importance = TRUE,
                       sampsize = c(min, min))

# Add predicted values to data frame
df_rf <- df_rf %>% 
  mutate(predicted = predict(fit_rf))
# Get performance measures
confusionMatrix(df_rf$predicted, df_rf$Class, positive = "R")

# Get variable importance measures
imp_df <- data.frame(importance(fit_rf, scale = FALSE, type = 1))

# Tidy up and sort the data frame
imp_df <- imp_df %>% 
  mutate(names = rownames(imp_df)) %>% 
  arrange(desc(MeanDecreaseAccuracy))

# Save top predictor names as character vector
nm <- as.character(imp_df$names)[1:10]
# Get partial depedence values for top predictors
pd_df <- partial_dependence(fit = fit_rf,
                            vars = nm,
                            data = df_rf,
                            n = c(100, 200))
# Plot partial dependence using edarf
plot_pd(pd_df)

然后我得到的结果如下。

enter image description here

我成功地将多个图像组合成一个大图。但是,我需要选择这些地 block 中的任何一个。有什么办法可以尝试吗?

最佳答案

您可以使用 pd_df 数据框,首先必须通过 M 列和 R 列将其设为更长的格式,以便通过您想要的变量在 ggplot 中将其可视化,例如 V11:

library(ggplot2)
library(tidyr)
library(dplyr)
pd_df %>%
  pivot_longer(cols = c(M, R)) %>%
  ggplot(aes(x = V11, y = value, color = name)) +
  geom_line() +
  geom_point() +
  labs(x = "value", y = "prediction") 

创建于 2023-01-09,使用 reprex v2.0.2

您可以将 V11 替换为您想要的其他变量。

关于r - 如何从 R 的部分依赖图中选择一个图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75058700/

相关文章:

python - 如何实现分类变量的特征选择?

r - 在 ggplot 中的 x 轴上显示工作日和时间

r - 在 dplyr 过滤器行中 NA 数量大于 1

scikit-learn - 多标签问题中的 RandomForestClassifier - 它是如何工作的?

r - 将 .combine 与 cforest 一起使用时遇到问题

随机森林 : Does it make any difference if the test-set is also labeled?

python - 为什么 Weka RandomForest 给我的结果与 Scikit RandomForestClassifier 不同?

r - 在 data.table : how to get more than 1 column of results? 中分组

r - 在 R 中按周分组日期

r - geom_bar 中的 Scale_fill_brewer