【问题标题】:Data format for regression with package e1071使用包 e1071 进行回归的数据格式
【发布时间】:2018-03-21 18:46:13
【问题描述】:

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

inherits(x, "Matrix") 中的错误:缺少参数 "x",没有默认值

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

编辑: 我正在寻找类似的东西

数据

svm.model

【问题讨论】:

  • svm 命令需要知道因变量和自变量是什么,看起来你只有一个变量。参见,例如,rischanlab.github.io/SVM.htmlSpecies ~ . 上显示svm
  • 我想我需要将列表转换为两列矩阵?
  • 您是否只有一个要预测的单变量时间序列?如果是这样,这可能会有所帮助:computationalfinance.lsi.upc.edu/?page_id=242 -- 我可能不理解您进行回归的意图。感觉像是缺少部分数据或问题。

标签: r svm


【解决方案1】:

正如所指出的,支持向量机需要一个因变量和自变量。您只有一列数据。如果您想使用 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)

【讨论】:

    猜你喜欢
    • 2019-09-04
    • 2017-12-07
    • 2020-12-28
    • 2020-05-23
    • 2020-12-06
    • 2015-10-03
    • 2019-01-13
    • 2013-10-23
    • 2018-08-19
    相关资源
    最近更新 更多