我正在尝试了解如何将数据转换为允许我进行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”)
答案 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)