Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 用支持向量回归预测新数据_R_Svm_Predict - Fatal编程技术网

R 用支持向量回归预测新数据

R 用支持向量回归预测新数据,r,svm,predict,R,Svm,Predict,我试图在e1071软件包中使用R中的支持向量回归实现遗漏交叉验证。我的数据和代码大致如下所示: library(e1071) #create fake dataset y=rpois(30,3)-4+(rbinom(30,1,0.5))/2 x1=c(rep('C',16),rep('S',14)) x2=c(runif(16,0,1),runif(14,0,1)/10) x3=c(runif(16,0,1)/5,runif(14,0,1)) dat=data.frame(y=y,x1=x

我试图在e1071软件包中使用R中的支持向量回归实现遗漏交叉验证。我的数据和代码大致如下所示:

library(e1071) 

#create fake dataset

y=rpois(30,3)-4+(rbinom(30,1,0.5))/2
x1=c(rep('C',16),rep('S',14))
x2=c(runif(16,0,1),runif(14,0,1)/10)
x3=c(runif(16,0,1)/5,runif(14,0,1))
dat=data.frame(y=y,x1=x1,x2=x2,x3=x3)
train=dat[-1,]
test=dat[1,]

# train the model

model=tune(svm, train$y ~ train$x1*train$x2*train$x3,kernel='linear',
ranges = list(epsilon = seq(0.1,0.6,0.1), cost = 2^(0:9)))
model=model$best.model

#predict

predict(model,newdata=test)

问题是predict函数只返回经过训练的值,而不预测测试数据集。我在这里看到了一个类似的问题,但似乎解决方案不适用于我的代码。对这个问题有什么想法吗

任何时候在公式(
~
)中使用
$
,这都表明事情可能会变得一团糟。下面是您应该如何重新编写
tune()
调用

model=tune(svm, y ~ x1*x2*x3, data=train, 
    kernel='linear', ranges = list(epsilon = seq(0.1,0.6,0.1), cost = 2^(0:9)))

这将把变量从
序列
data.frame中分离出来,并允许您预测到具有相同变量名称的新数据集。

任何时候您在公式(
~
)中使用
$
),这都表明事情很可能会搞砸。下面是您应该如何重新编写
tune()
调用

model=tune(svm, y ~ x1*x2*x3, data=train, 
    kernel='linear', ranges = list(epsilon = seq(0.1,0.6,0.1), cost = 2^(0:9)))

这将变量从
序列
data.frame中分离出来,并允许您预测到具有相同变量名称的新数据集。

这里有几件事-我不知道您是否希望x1、x2和x3之间的三重交互,或者是否希望它们作为自变量。下面将它们作为独立变量运行。然而,最重要的是调用模型公式中的数据,这就是为什么总是预测火车数据集(火车$x1)


这里有几件事-我不知道你是想要x1,x2和x3之间的三重相互作用,还是想要它们作为自变量。下面将它们作为独立变量运行。然而,最重要的是调用模型公式中的数据,这就是为什么总是预测火车数据集(火车$x1)


实际上,我以前是用这种方式调用函数的,但由于某种原因,我收到了一条错误消息。现在它成功了。非常感谢你的帮助!!实际上,我以前是用这种方式调用函数的,但由于某种原因,我收到了一条错误消息。现在它成功了。非常感谢你的帮助!!是的,我预计这三个变量之间可能存在相互作用。我用这种形式重写了调子,它成功了!非常感谢。任何非线性算法都将拾取交互。你不需要做任何乘法运算,它只会弄乱你的方程。是的,我认为这三个变量之间可能存在相互作用。我用这种形式重写了调子,它成功了!非常感谢。任何非线性算法都将拾取交互。你不需要做任何乘法运算,它只会弄乱你的方程式。