从 kknn 模型中检索距离矩阵
Retrieving distance matrix from kknn model
在 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$models
或 cv$pred
中看不到任何相关内容。
crossval
的 return 值是一个 ResampleResult
,其中包含在 $models
成员中的各个迭代中拟合的模型(请注意,这是一个列表).模型是由基础学习者 return 编辑的对象,因此在每个模型中应该有一个包含距离矩阵的成员 $D$
。
有关详细信息,请参阅 the tutorial。
编辑:在这种特殊情况下,您不会在通常的地方获得学习者模型,因为 kknn
是一个(无模型)聚类器并且 kknn
函数实际上并不被 mlr
呼叫,直到 predict
。由 train
编辑的 "model" return 只是训练数据(还有一些额外的位)。
predict
函数 return 只是预测而不是模型,因此不幸的是,在这种特殊情况下,您无法直接获得距离矩阵。但是,您可以从 mlr
获取学习者模型并对其调用 kknn
以获取距离矩阵:
kknn(getTaskFormula(cv$models[[1]]$task.desc),
train = cv$models[[1]]$learner.model$data,
test = iris)$D
在 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$models
或 cv$pred
中看不到任何相关内容。
crossval
的 return 值是一个 ResampleResult
,其中包含在 $models
成员中的各个迭代中拟合的模型(请注意,这是一个列表).模型是由基础学习者 return 编辑的对象,因此在每个模型中应该有一个包含距离矩阵的成员 $D$
。
有关详细信息,请参阅 the tutorial。
编辑:在这种特殊情况下,您不会在通常的地方获得学习者模型,因为 kknn
是一个(无模型)聚类器并且 kknn
函数实际上并不被 mlr
呼叫,直到 predict
。由 train
编辑的 "model" return 只是训练数据(还有一些额外的位)。
predict
函数 return 只是预测而不是模型,因此不幸的是,在这种特殊情况下,您无法直接获得距离矩阵。但是,您可以从 mlr
获取学习者模型并对其调用 kknn
以获取距离矩阵:
kknn(getTaskFormula(cv$models[[1]]$task.desc),
train = cv$models[[1]]$learner.model$data,
test = iris)$D