使用R支持向量机预测简单序列

时间:2019-05-03 14:59:22

标签: r dataframe machine-learning plot svm

我正在尝试使用支持向量机来预测值序列,例如:

输入0、1、2、3将预测4

由于这个原因,我将此问题作为R中的回归ML问题来处理,这是我的代码:

library("e1071")
x0 <- c(0)
x1 <- c(0, 1)
x2 <- c(0, 1, 2)
x3 <- c(0, 1, 2, 3)
x4 <- c(0, 1, 2, 3, 4)
x5 <- c(0, 1, 2, 3, 4, 5)
x6 <- c(0, 1, 2, 3, 4, 5, 6)
x7 <- c(0, 1, 2, 3, 4, 5, 6, 7)

x = c(x0, x1, x2, x3, x4, x5, x6, x7)
y = c(1, 2, 3, 4, 5, 6, 7, 8)

df = data.frame(x, y)
df

svmfit = svm(y ~ ., data = df)
print(svmfit)

此刻,我陷入了如何正确创建输入序列的困境,并且不断收到此错误:

  

data.frame(x,y)中的错误:参数暗示行数不同:   36、8追溯:

     
      
  1. data.frame(x,y)
  2.   
  3. stop(gettextf(“参数暗示不同的行数:%s” ,. paste(unique(nrows),collapse =“,”)),domain = NA)
  4.   

有人可以帮助我吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

问题在于'x'和'y'向量的长度不相等(36,8),并且它不是另一个的倍数,因此不会发生回收。一种选择是rep将'y'向量切成与'x'相同的长度,然后进行svm

df <- data.frame(x, y = rep(y, length.out = length(x))) 
svmfit = svm(y ~ ., data = df)

svmfit

#Call:
#svm(formula = y ~ ., data = df)


#Parameters:
#   SVM-Type:  eps-regression 
# SVM-Kernel:  radial 
#       cost:  1 
#      gamma:  1 
#    epsilon:  0.1 


#Number of Support Vectors:  34