0

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

FUN(X[[i]], ...) 中的错误:测量 multiclass.au1p 需要预测类型为:'prob'!

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

setPredictType.Learner(learner, predict.type) 中的错误:尝试预测概率,但 classif.xgboost.multiclass 不支持!

我该如何解决这个问题?

以下是我的代码

  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)
4

2 回答 2

4

它不适用于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))
于 2017-04-13T08:11:23.323 回答
2

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

listLearners(properties = "prob")
于 2017-04-12T23:05:39.203 回答