使用包e1071进行回归的数据格式

时间:2018-03-21 18:46:14

标签: r svm

我正在尝试了解如何将数据转换为允许我进行svm回归的格式。我有一个看起来像

的时间序列
data

[1] 1.20962 1.21036 1.21006 1.20873 1.20658 1.20676 1.20576 1.20555 1.20526 1.20504 1.20516
[12] 1.20581 1.20456 1.20558 1.20496 1.20547 1.20382 1.20312 1.20259 1.20306 1.20137 1.20089

我执行rev然后diff

data <- rev(data)
data <- diff(data)
data

[1] -0.00040  0.00092 -0.00095 -0.00045  0.00013  0.00247  0.00055 -0.00058  0.00106  0.00188
[11]  0.00110 -0.00002  0.00069  0.00019 -0.00058  0.00080 -0.00021 -0.00079 -0.00007  0.00123

但是使用svm

的格式不正确
library(e1071)
svm.model <- svm(data=data, type="nu-regression", kernel="radial" )
  

继承错误(x,“Matrix”):缺少参数“x”,没有默认值

我不确定如何将其操作为data.frame或其他正在寻找的方式。

编辑: 我在寻找像这样的东西

  

data&lt; - matrix(unlist(data),ncol = 2,byrow = TRUE)

     

svm.model&lt; - svm(x = data [,1],y = data [,2],data = data,type =“nu-regression”,kernel =“radial”)

1 个答案:

答案 0 :(得分:0)

正如所指出的,svm需要一个依赖和自变量。您只有一列数据。如果您想使用svm来预测时间序列,则需要有时间列或索引。以下是一个例子:

  library ("e1071")
  foo.data <- matrix (nrow = 22, ncol = 2)
  foo.data [, 1] <- c (1.20962, 1.21036, 1.21006, 1.20873, 1.20658,     1.20676, 1.20576, 1.20555,
           1.20526, 1.20504, 1.20516, 1.20581, 1.20456, 1.20558, 1.20496, 1.20547,
           1.20382, 1.20312, 1.20259, 1.20306, 1.20137, 1.20089)

  foo.data [, 2] <- seq (from = 1, to = 22, by = 1) #you don't have a time/data index

  foo.svm <- svm (foo.data [,1] ~ foo.data [,2], type="nu-regression", kernel="radial" )

  summary (foo.svm)