2014-10-07 8 views
-2

Я работаю над набором данных для аутентификации пользователей, и я хочу разделить данные поезда как самозванец и действительный пользователь. Он имеет 31 функцию и 51 пользователь.Код точности svm в matlab

У меня есть 200 образцов для поезда и 200 образцов для испытания. Это мой код:

ttrain=[train;train2]  
group=[repmat(1,100,1);repmat(2,100,1)]  
model=svmtrain(ttrain,group,'kernel_function','rbf')  
testoutput=svmclassify(model,test,'Showplot','false') 

, но когда я хочу, чтобы вычислить точность с кодом ниже, показывает ошибку: "Undefined function 'eq' for input arguments of type 'struct'."

acc = sum(model == testoutput) ./ numel(testoutput)  

Что я должен делать?

+0

Не могли бы вы немного разъяснить? Вы говорите, что данные вашего поезда имеют 31 функцию и 51 пользователь. Для меня это похоже на то, что в вашем учебном наборе есть 51 пример. Ниже вы указываете, что ваши учебные данные состоят из 200 примеров. Что означают «51 пользователь»? – user1809923

ответ

0

модель SVMStruct и поэтому не может сравниться с использованием «==». То, что вы хотите сделать, состоит в том, чтобы подсчитать, сколько примеров ваш SVM предсказал правильно и разделить это число на общее количество тестируемых примеров.

Я предполагаю, что вы должны сделать что-то подобное со следующей предпосылке:

  • correctLabels являются этикетки, которые правильно для примеров вы тест SVM для:

    акк = сумма (correctLabels == testoutput)/numel (correctLabels)

Смежные вопросы