mlr包resample多学习器重采样报错:参数learner缺失解决方法
解决mlr中resample函数无法识别多学习器列表的问题
错误原因
mlr包的resample()函数仅支持传入单个学习器(对应参数learner),你当前传入的是多个学习器组成的列表(命名为learners),函数找不到必填的learner参数,因此抛出报错。
解决方案
使用benchmark()函数替代resample(),该函数专门支持同时评估多个学习器,参数逻辑与resample()兼容,只需将原代码中的resample替换为benchmark即可:
library(mlr) learners = makeLearners(cls = c("C50", "rpart","ada","naiveBayes"), type = "classif", predict.type = "prob") data_task = makeClassifTask(data = dataset, target = "y_dx") repCV = makeResampleDesc(method = "RepCV", folds = 5 ,stratify = TRUE) # 替换为benchmark函数 valCV = benchmark( learners = learners, tasks = data_task, resamplings = repCV, measures = list(mmce, acc, auc))
补充说明
benchmark()的返回结果结构与resample()略有不同,可以通过getBMRAggrPerformances(valCV)提取各学习器的聚合性能指标。- 确保所有学习器的
predict.type与你指定的评估指标兼容(比如auc需要predict.type = "prob",你的代码已经正确设置)。
内容的提问来源于stack exchange,提问作者royer
相关产品推荐
相关产品推荐

