使用kernlab包进行预测时出现错误:Error in .local(object, ...) : test vector does not match model R。

6

我正在对回归问题使用kernlab软件包进行测试。似乎在将ksvm对象传递给predict函数时,通常会出现'Error in .local(object, ...) : test vector does not match model ! 的问题。然而,我只找到了关于分类问题或自定义内核的答案,这些答案并不适用于我的问题(我正在使用内置的回归内核)。我已经没有更多的想法了,以下是我的示例代码:

data <- matrix(rnorm(200*10),200,10)
tr <- data[1:150,]
ts <- data[151:200,]

mod <- ksvm(x = tr[,-1],
            y = tr[,1],
            kernel = "rbfdot", type = 'nu-svr',
            kpar = "automatic", C = 60, cross = 3)

pred <- predict(mod, 
                ts
                )
2个回答

5

您在测试集中忘记移除变量y,导致预测器数量不匹配而失败。以下是可行的代码:

predict(mod,ts[,-1])

有时函数需要响应,有时则不需要...谢谢! - nopeva
@eccehomo 什么时候需要回复? - nograpes
我指的是像caret这样的其他软件包。例如,如果您尝试使用method = rf函数进行训练,则还必须提供响应以进行预测。 - nopeva

1

如果ts是一个数据框,您可以使用pred <- predict(mod, ts)

这将会是:

    data <- setNames(data.frame(matrix(rnorm(200*10),200,10)),
                     c("Y",paste("X", 1:9, sep = "")))
    tr <- data[1:150,]
    ts <- data[151:200,]

    mod <- ksvm(as.formula("Y ~ ."), data = tr,
        kernel = "rbfdot", type = 'nu-svr',
        kpar = "automatic", C = 60, cross = 3)

    pred <- predict(mod, ts)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接