r语言 - 从 kknn 模型中检索距离矩阵



在 R 中使用包并交叉验证时mlr是否可以从kknn模型中检索距离矩阵?

library("mlr")
data(iris)
task = makeClassifTask(data = iris, target = "Species")
lnr = makeLearner(
cl = "classif.kknn",
predict.type = "prob",
k = 5,
kernel = "gaussian",
scale = TRUE
)
cv = crossval(
learner = lnr,
task = task,
iters = 4,
stratify = TRUE,
measures = acc,
show.info = FALSE,
model = TRUE
)
str(cv$models[1])

我在cv$modelscv$pred中看不到任何相关内容.

crossval

的返回值是一个ResampleResult,它包含在$models成员的各个迭代中拟合的模型(注意这是一个列表(。模型是基础学习器返回的对象,因此在每个模型中都应该有一个包含距离矩阵的成员$D$

有关详细信息,请参阅教程。

编辑:在这种特殊情况下,您不会在通常的位置获得学习器模型,因为kknn是一个(无模型(聚类器,并且在您predict之前,mlr实际上不会调用kknn函数。train返回的"模型"只是训练数据(带有一些额外的位(。

predict函数只返回预测而不是模型,所以不幸的是,在这种特殊情况下,您无法直接到达距离矩阵。但是,您可以从mlr获取学习器模型,并调用kknn来获取距离矩阵:

kknn(getTaskFormula(cv$models[[1]]$task.desc),
train = cv$models[[1]]$learner.model$data,
test = iris)$D

相关内容

  • 没有找到相关文章

最新更新