Предсказать простую последовательность с R, поддержка векторной машины - PullRequest
2 голосов
/ 03 мая 2019

Я пытаюсь использовать машину опорных векторов для прогнозирования последовательности значений, например:

, вход 0, 1, 2, 3 будет прогнозировать 4

По этой причине яподошел к этой проблеме как к проблеме регрессии ML в R, вот мой код:

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. stop (gettextf ("аргументы подразумевают различное количество строк:% s",. Paste (уникальные (nrows), collapse = ",")), домен = NA)

Кто-нибудь может мне помочь?

Заранее большое спасибо!

1 Ответ

1 голос
/ 03 мая 2019

Проблема заключается в неравной длине вектора '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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...