【发布时间】:2022-12-08 08:21:02
【问题描述】:
按照 Michael Mayer 的 post 中的步骤,我尝试使用以下示例代码在 R 中拟合 LightGBM(多类)分类器后进行快速 SHAP 分析:
library(dplyr)
library(ggplot2)
library(SHAPforxgboost)
library(lightgbm)
set.seed(111)
x1 <- rnorm(1:2000)
x2 <- rnorm(1:2000)
y <- rnorm(1:2000)
df <- data.frame(x1,x2,y)
df <-
df |>
mutate(y = abs(y),
y = round(y, digits = 0),
y = ifelse(y >= 2, 2, y),
y = as.character(y))
# Define response and features
y <- "y"
x <- c("x1","x2")
# random split
set.seed(83454)
ix <- sample(nrow(df), 0.8 * nrow(df))
dtrain <- lgb.Dataset(data.matrix(df[ix, x]),
label = df[ix, y])
dvalid <- lgb.Dataset(data.matrix(df[-ix, x]),
label = df[-ix, y])
params <- list(
objective = "multiclass",
metric = "multi_error",
learning_rate = 0.05,
num_leaves = 15,
num_class = 3
)
fit_lgb <- lgb.train(params,
dtrain,
nrounds = 89L,
valids = list(valid = dvalid),
early_stopping_rounds = 20L
)
# SHAP IMPORTANCE
shap <- shap.prep(fit_lgb, X_train = as.matrix(df[,-3]))
但是,在运行 shap.prep(fit_lgb, X_train = as.matrix(df[,-3])) 后,我收到以下错误:“dimnames(x) <- dn 中的错误:‘dimnames’[2] 的长度不等于数组范围”
知道出了什么问题吗?
谢谢!
【问题讨论】:
标签: r machine-learning lightgbm shap