【发布时间】:2019-10-13 22:05:19
【问题描述】:
我正在尝试使用交叉验证来衡量一些 MLR 分类器的多标签分类性能
我尝试使用 MLR resample 方法或传递我自己的子集,但是在这两种情况下都会引发错误(据我发现,当用于训练的子集仅包含某个标签的单个值时会发生这种情况)
以下是出现此问题的一个小示例:
learner = mlr::makeLearner("classif.logreg")
learner = makeMultilabelClassifierChainsWrapper(learner)
data = data.frame(
attr1 = c(1, 2, 2, 1, 2, 1, 2),
attr2 = c(2, 1, 2, 2, 1, 2, 1),
lab1 = c(FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE),
lab2 = c(FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE))
task = mlr::makeMultilabelTask(data=data, target=c('lab1', 'lab2'))
这里有两种出错的方式:
1.
rDesc = makeResampleDesc("CV", iters = 3)
resample(learner, task, rDesc)
2.
model = mlr::train(learner, task, subset=c(TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE))
错误信息:
checkLearnerBeforeTrain(task, learner, weights) 中的错误:任务“lab1”是一类问题,但学习者“classif.logreg”不支持!
【问题讨论】:
-
好吧,您要么必须使用支持单类分类的学习器,要么以一种不会在分区中得到单个类的方式拆分数据。
标签: r cross-validation multilabel-classification mlr