【问题标题】:kernlab regression内核实验室回归
【发布时间】:2011-12-13 16:31:45
【问题描述】:

有人在kernlab 回归中遇到过这个困难吗?它似乎失去了一些比例因子或其他东西,但也许我说错了。

library(kernlab)
df <- data.frame(x=seq(0,10,length.out=1000))
df$y <- 3*df$x + runif(1000) - 3
plot(df)
res <- ksvm(y ~ x, data=df, kernel='vanilladot')
lines(df$x, predict(res), col='blue', lwd=2)

通过这个玩具示例,如果我明确传递newdata=df,我可以获得合理的结果,但使用我的真实数据,我发现没有这样的解决方法。有什么见解吗?

【问题讨论】:

    标签: r regression kernlab


    【解决方案1】:

    传递newdata 参数是正确的方法(否则它将使用内部缩放的数据,就像你看到的那样)。典型的方式是这样的:

    newx = seq(min(df$x), max(df$x), len=100)
    lines(newx, predict(res, newdata=data.frame(x=newx)), col='blue', lwd=2)
    

    如果这仍然不适用于您的真实数据,请详细说明...

    对于它的价值,我通常更喜欢先手动缩放我的数据,然后设置scaled=F。这样您就不必担心会在不同时间出现的这类事情。

    编辑:我还应该补充一点,当您制作newdata 数据框时,变量名称应该与您用于创建模型的名称相匹配,而不一定是“x”。

    【讨论】:

    • 这似乎是一个错误,对吧?缩放不应取决于 newdata 是隐式还是显式。
    • 在我的实际任务中,我正在做交叉验证,所以我通过newdata= 得到predict() 结果。
    • 不确定。绝对有可能,但我想有人也可以提出很好的理由来绘制默认情况下模型中的实际内容。
    • 刚刚在与 Alexandros 的私人电子邮件中确认这是一个错误,他们将在下一个版本中修复。感谢您的帮助。
    猜你喜欢
    • 2014-12-15
    • 2013-11-20
    • 2021-03-04
    • 1970-01-01
    • 2021-12-24
    • 2014-10-16
    • 2016-02-25
    • 2016-10-11
    • 2013-11-29
    相关资源
    最近更新 更多