You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mlr3聚类任务中graph转learner报错的解决方案问询

问题原因

as_learner()对Graph做学习器封装时,默认要求Graph的最终输出为对应任务类型的Prediction子类对象。你当前构建的Graph末尾是聚类学习器节点,输出的是kmeans模型实例而非标准聚类预测结果,触发类型校验失败报错。

解决方案

在Graph的末尾追加po("prediction_clust")节点,该节点会自动将聚类学习器的输出转换为符合要求的PredictionClust对象,封装后的学习器可正常用于训练、预测及benchmark操作。

修正后的可运行代码如下:

# metapackage
library(mlr3verse)

# task creation
task = TaskClust$new(
    id = "cars",
    backend = subset(
        mtcars,
        select = c(
            mpg,
            cyl,
            hp
        )
    )
)

# learner
learner = lrn("clust.kmeans")

# 新增prediction_clust节点处理输出,符合as_learner的类型要求
graph = po("scale") %>>%
    po("learner", learner) %>>%
    po("prediction_clust")

# 转换graph为learner,不再报错
glrn = as_learner(graph)

# 验证功能正常
glrn$train(task)
print(glrn$predict(task))

# 可直接传入benchmark()执行基准测试

如果你后续需要封装其他任务类型的Graph,对应替换预测节点即可:分类任务用po("prediction_classif"),回归任务用po("prediction_regr")。

内容的提问来源于stack exchange,提问作者Alberson Miranda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:54:04