我正在尝试在 mlr 包中使用 multiclass.au1p 度量。它给了我一个错误说
FUN(X[[i]], ...) 中的错误:测量多类.au1p 需要 预测类型为:"概率"!
当我尝试将预测类型设置为 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)
它不适用于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))
您需要使用支持预测概率的分类器。您可以使用listLearners()
函数获取列表:
listLearners(properties = "prob")