我正在try 计算我的xgBoost模型的Shap值:
X_train <- as.matrix(train_data[, !names(train_data) %in% c("min_column")])
Y_train<-train_data$min_column
Y_train <- as.integer(as.factor(Y_train)) - 1
Y_train = as.matrix(Y_train)
num_class <- length(unique(Y_train)
> params <- list(booster = "gbtree",
objective = "multi:softmax",
eta=0.01,
gamma=0.01,
max_depth=2,
subsample=1,
num_class=num_class)
> xgb1 <- xgb.train(data = X_train, label = Y_train, verbose = FALSE, params = params, nrounds = 10)
> shap_values <- SHAPforxgboost::shap.values(xgb_model = xgb1, X_train = X_train)
但是,我总是收到以下错误:
Error in `colnames<-`(`*tmp*`, value = c(colnames(X_train), "BIAS")) :
attempt to set 'colnames' on an object with less than two dimensions
我发现,当我没有在参数列表中指定与多类分类模型(booster = "gbtree" + objective = "multi:softmax"+ num_class)
相关的参数时,shap.Values函数就会起作用.
但如果我不在参数中指定它,我不确定模型是否会识别我想要的多类分类模型.
有没有人知道该怎么做?