2016-10-22 1 views
1

code shown here J'essaie de mettre en œuvre SVM pour la classification. L'objectif est de sortir la grille d'origine correcte d'un signal d'alimentation (fichier .wav). Les grilles sont intitulées A-I et il y a 93 signaux au total pour l'ensemble d'entraînement et 49 signaux d'entraînement. J'ai une matrice 93x10x36 de vecteurs de caractéristiques. Est-ce que quelqu'un sait pourquoi je reçois les erreurs montrées? TrainCorrectGrid et Training_Cepstrum1 ont tous deux 93 lignes donc je ne comprends pas quel est le problème. Toute aide est grandement appréciée.SVM matlab exemple

error shown here

La fonction multisvm est montré ici:

function [result] = multisvm(TrainingSet,GroupTrain,TestSet) 
%Models a given training set with a corresponding group vector and 
%classifies a given test set using an SVM classifier according to a 
%one vs. all relation. 
% 
%This code was written by Cody Neuburger [email protected] 
%Florida Atlantic University, Florida USA 
%This code was adapted and cleaned from Anand Mishra's multisvm function 
%found at http://www.mathworks.com/matlabcentral/fileexchange/33170-multi-class-support-vector-machine/ 

u=unique(GroupTrain); 
numClasses=length(u); 
result = zeros(length(TestSet(:,1)),1); 

%build models 
for k=1:numClasses 
    %Vectorized statement that binarizes Group 
    %where 1 is the current class and 0 is all other classes 
    G1vAll=(GroupTrain==u(k)); 
    models(k) = svmtrain(TrainingSet,G1vAll); 
end 

%classify test cases 
for j=1:size(TestSet,1) 
    for k=1:numClasses 
     if(svmclassify(models(k),TestSet(j,:))) 
      break; 
     end 
    end 
    result(j) = k; 
end 
+0

Si vous avez plus de deux classes, vous devriez lire au sujet de [l'un contre un et contre tous] (https: //en.wikipedia. org/wiki/Multiclass_classification) SVMs pour la classification multiclasses. –

+0

@ ParagS.Chandakkar Je l'ai déjà regardé mais c'est plutôt déroutant ... Je n'ai aucune idée de comment j'implémenterais SVM pour plus de deux classes de code. J'ai des classes A à I. Les exemples de Matlab ne montrent que deux exemples de classes – user6132277

+0

Pourquoi ne pas regarder dans [libSVM] (http://www.csie.ntu.edu.tw/~cjlin/libsvm/) ?. Il utilise la méthode 'one-vs-one' en interne, de sorte que vous n'avez pas à vous soucier de cela. Vous venez de fournir vos données et vos étiquettes multiclasses. Il est également compatible avec MATLAB. –

Répondre

0

SVM sont généralement de un contre un ou un contre tous les classificateurs. Cependant, il existe des moyens de les modifier pour obtenir une classification multiclasse.

This package implémente une telle manière.

Voici un exemple de code pour utiliser le package

TrainingSet=[ 1 10;2 20;3 30;4 40;5 50;6 66;3 30;4.1 42]; 
TestSet=[3 34; 1 14; 2.2 25; 6.2 63]; 
GroupTrain=[1;1;2;2;3;3;2;2]; 
results = multisvm(TrainingSet, GroupTrain, TestSet); 
disp('multi class problem'); 
disp(results); 
+0

qu'est-ce que GroupTrain dans cet exemple? – user6132277

+0

Ce sont les classes assignées aux vecteurs de caractéristiques – Harjatin

+0

Il n'y a pas non plus d'explication sur ce que représentent les ensembles de formation et de test. Veuillez expliquer que l'exemple de code – user6132277