如何在 MLR 中使用 multiclass.au1p 度量

how to use multiclass.au1p measure in mlr

我正在尝试在 mlr 包中使用 multiclass.au1p 度量。它给了我一个错误

Error in FUN(X[[i]], ...) : Measure multiclass.au1p requires predict type to be: 'prob'!

当我尝试将预测类型设置为 prob 时,它给了我一个类似于以下我使用的任何分类器的错误

Error in setPredictType.Learner(learner, predict.type) : Trying to predict probs, but classif.xgboost.multiclass does not support that!

我该如何解决这个问题?

以下是我的代码

  trainTask <- makeClassifTask(data = no_out_pso,target = "response_grade")

  Clslearn = makeLearner("classif.xgboost", predict.type = "prob")
  Clslearn = makeMulticlassWrapper(Clslearn, mcw.method = "onevsrest")
  Clslearn = setPredictType(Clslearn, "prob")

  rdesc = makeResampleDesc("CV", iters = 3)

  r = resample(Clslearn, trainTask, rdesc, measures = list(mlr::acc, mlr::multiclass.au1p, mlr::multiclass.au1u))

  print(r)

您需要使用支持预测概率的分类器。您可以使用 listLearners() 函数获取列表:

listLearners(properties = "prob")

它不适用于makeMulticlassWrapper,因为它不支持概率预测(目前)。当我尝试在您的代码中将其设置为 prob 时,我也遇到了错误。

有效代码:

Clslearn = makeLearner("classif.xgboost", predict.type = "prob")
rdesc = makeResampleDesc("CV", iters = 3)
r = resample(Clslearn, iris.task, rdesc, measures = list(mlr::acc, mlr::multiclass.au1p, mlr::multiclass.au1u))