2013-12-06 4 views
0

Я новичок в Matlab, а также в LIBSVM. Я вычислил вектор функции для каждой точки, обозначая значения r, g, b точки в одном векторе и сохранил ее в файле .mat. В настоящее время у меня около 420 очков и 4 класса - красный/зеленый/синий/другой. Теперь я хочу передать этот файл .mat для обучения libsvm и на основе этого классифицировать вновь прибывающий тестовый пункт, будь то красный, синий или зеленый или другой. Не стоит забывать, что это многоклассовая классификация, и я даже не знаю, как с этим бороться? svmtrain(TrainingSet,Groups,'kernel_function','rbf'); где TrainingSet - мой набор функций 420*4 и Groups - это имя класса. Заранее благодарим за помощь.Использование векторного файла .mat для LIBSVM в matlab

+0

, что именно вы хотите достичь? что вы пытались, где вы застряли? Вы читали 'doc svmtrain'? –

+0

LIBSVM поставляется с многоклассовой классификацией из коробки. Проверьте документацию. –

ответ

0

Вы можете попробовать один-общий подход с помощью libsvm.

model = cell(4,1); 
for k=1:4 
    model{k} = svmtrain(double(TrainingSet==k), Groups, '-c 1 -g 0.2 -b 1'); 
end 

Затем в процессе испытаний, просто вычислить вероятность различных меток:

pr = zeros(numTest,4); 
for k=1:4 
    [~,~,p] = svmpredict(double(testLabel==k), TestSet, model{k}, '-b 1'); 
    pr(:,k) = p(:,model{k}.Label==1); %# probability of class==k 
end 

и ваше предсказание метки будет один с наибольшей вероятностью:

[~,predctedLabel] = max(pr,[],2); 
+0

он дал ошибку, так как «Длина вектора метки не соответствует количеству экземпляров», поскольку TrainingSet имеет значение 420 * 4, а Group имеет значение 1 * 420 .. – kAmol

+0

использовать группу вместо этого, она изменится на 420 * 1 – lennon310

+0

такой же, добавив [моментальный снимок] (https://app.box.com/s/kgjorku3tpnrj5cusg08) – kAmol

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