Я хочу сделать прогнозы из простого временного ряда. Наблюдения y=[11,22,33,44,55,66,77,88,99,110]
и в момент времени x=[1,2,3,4,5,6,7,8,9,10]
. Я использую epsilon-SVR из набора инструментов libsvm. Мой код выглядит следующим образом:Почему я получаю пустую матрицу из svmpredict?
x1 = (1:7)'; #' training set
y1 = [11, 22, 33, 44, 55, 66, 77]'; #' observations from time series
options = ' -s 3 -t 2 -c 100 -g 0.05 -p 0.0003 ';
model = svmtrain(y1, x1, options)
x2 = (8:10)'; #' test set
y2 = [88, 99, 110]'; #' hidden values that are not used for training
[y2_predicted, accuracy] = svmpredict(y2, x2, model)
Но функция svmpredict
дает мне нулевой выход, как показано ниже:
y2_predicted =
[]
accuracy =
[]
Являются ли ваши данные ограниченными этим небольшим количеством примеров данных? Кстати: будьте осторожны, как вы пробовали свое обучение и тестовый набор данных. Кажется, вы выбрали последние наблюдения из своих данных в качестве тестового набора, я думаю, что лучше попробовать случайным образом, чтобы предотвратить эффекты, связанные с порядком. –
Неужели 'y2' не должен быть введенным в' svmpredict'? - nevermind, http://www.mathworks.com/matlabcentral/answers/116420-how-to-use-svmpredict-libsvm прояснил мой вопрос – Dan
Ваш синтаксис MATLAB неверен - 'x1 = (1: 7) ' ; # 'training set' недействителен MATLAB. 'x1 = (1: 7) '; % 'training set' есть. – mprat