2015-05-18 4 views
1

Я хочу сделать прогнозы из простого временного ряда. Наблюдения 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 = 
    [] 
+1

Являются ли ваши данные ограниченными этим небольшим количеством примеров данных? Кстати: будьте осторожны, как вы пробовали свое обучение и тестовый набор данных. Кажется, вы выбрали последние наблюдения из своих данных в качестве тестового набора, я думаю, что лучше попробовать случайным образом, чтобы предотвратить эффекты, связанные с порядком. –

+0

Неужели 'y2' не должен быть введенным в' svmpredict'? - nevermind, http://www.mathworks.com/matlabcentral/answers/116420-how-to-use-svmpredict-libsvm прояснил мой вопрос – Dan

+0

Ваш синтаксис MATLAB неверен - 'x1 = (1: 7) ' ; # 'training set' недействителен MATLAB. 'x1 = (1: 7) '; % 'training set' есть. – mprat

ответ

1

Причина вы не получаете выходные предсказания в том, что вы звоните svmpredict неправильно. Есть два способа вызвать его:

[predicted_label, accuracy, decision_values/prob_estimates] = svmpredict(testing_label_vector, testing_instance_matrix, model, 'libsvm_options') 
[predicted_label] = svmpredict(testing_label_vector, testing_instance_matrix, model, 'libsvm_options' 

С выходом одного аргумента и 3, но не 2. Таким образом, чтобы исправить вашу проблему, вы можете сделать:

[y2_pred, accuracy, ~] = svmpredict(y2, x2, model) 

, если вы не» не заботьтесь о значениях решения. Если вы это сделаете, то

[y2_pred, accuracy, decision_values] = svmpredict(y2, x2, model) 
Смежные вопросы