我正在尝试将AUPRC用作我的gbm模型拟合的自定义度量标准,因为我有一个不平衡的分类器。但是,当我尝试将自定义度量标准纳入其中时,我得到了代码中提到的以下错误。不确定我做错了什么。
另外,当我在内联运行auprcSummary()时,它可以正常工作。但是,当我尝试将其纳入train()中时,它会给我一个错误。
library(dplyr) # for data manipulation
library(caret) # for model-building
library(pROC) # for AUC calculations
library(PRROC) # for Precision-Recall curve calculations
auprcSummary <- function(data, lev = NULL, model = NULL){
index_class2 <- data$Class == "Class2"
index_class1 <- data$Class == "Class1"
the_curve <- pr.curve(data$Class[index_class2],
data$Class[index_class1],
curve = FALSE)
out <- the_curve$auc.integral
names(out) <- "AUPRC"
out
}
ctrl <- trainControl(method = "repeatedcv",
number = 10,
repeats = 5,
summaryFunction = auprcSummary,
classProbs = TRUE)
set.seed(5627)
orig_fit <- train(Class ~ .,
data = toanalyze.train,
method = "gbm",
verbose = FALSE,
metric = "AUPRC",
trControl = ctrl)
这是我收到的错误信息:
Error in order(scores.class0) : argument 1 is not a vector
是因为pr.curve()只接受数值向量作为输入(分数/概率)吗?