带有随机森林 SHAP 值的蜂群图

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

我之前尝试使用随机森林可视化 SHAP 值的结果。

我正在编写这段代码:

# Load necessary libraries
library(randomForest)
library(DALEX)
library(beeswarm)

data <- turismo_rf

# Split the data into features and target
features <- data[, -which(names(data) %in% "Clus.1")]
target <- data$Clus.1

# Train a random forest model
rf_model <- randomForest(features, target)

# Create an explainer object
explainer <- DALEX::explain(rf_model, data = features, y = target)

# Compute SHAP values
shapley_values <- DALEX::predict_parts(explainer, new_observation = features)

# Plot bee swarm
beeswarm(shapley_values$shap_1)

问题是我尝试过使用

beeswarm package

但我总是收到此错误:

beeswarm(shapley_values$shap_1)
Error in rep(nms, sapply(x, length)) : invalid 'times' argument

你能告诉我蜂群有什么问题吗?

输出我想做的事情

这是我得到的输出,如果我只使用

plot(shapley_values)

r machine-learning random-forest shap
1个回答
0
投票

如果无法看到一些数据,就很难判断,因此我尝试使用

iris
数据集重现您的示例。问题似乎是
shapley_values
数据框不包含名为
shap_1
的列。也许您对
contribution
专栏感兴趣?这给出了每个变量对给定观察的预测的贡献。

此代码生成蜂群图:

# Load necessary libraries
library(randomForest)
library(DALEX)
library(beeswarm)

data <- iris

# Split the data into features and target
features <- data[, -which(names(data) %in% "Species")]
target <- data$Species

# Train a random forest model
rf_model <- randomForest(features, target)

# Create an explainer object
explainer <- DALEX::explain(rf_model, data = features, y = target)

# Compute SHAP values
shapley_values <- DALEX::predict_parts(explainer, new_observation = features)

# Extract contributions as a numeric vector
contributions_vector <- as.numeric(shapley_values$contribution)

# Plot bee swarm
beeswarm(contributions_vector)

这个情节看起来并不是特别有用。绘制后,您可以向其添加文本标签。或者一个简单的

contribution
条形图可能会提供更多信息。

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