2016-04-11 9 views
0

Ich habe den folgenden Code geschrieben, um svmtrain zu untersuchen.Anwenden von SVM auf einen Datensatz

a = 5*[randn(200, 1) + 5, randn(200, 1) + 5]; 
b = 5*[randn(200, 1) + 5, randn(200, 1) - 5]; 
all_data = [a;b]; 

plot(a(:,1) , a(:,2),'b.'); hold on 
plot(b(:,1) , b(:,2),'r.'); 

group = ['r';'b']; 

svmStruct = svmtrain(all_data, group,'ShowPlot',true); 

Ich habe zwei normalverteilte Datensätze erstellt (a und b) und dann kombiniert sie zu einem einzigen 2D-Array. Jetzt möchte ich diese zwei Bereiche unter Verwendung svmtrain trennen, aber ich weiß nicht, was ich mit dem Parameter Group tun sollte. Wie Matlab Hilfe angegeben, kann ich eine 2x1 Matrix von Zeichen verwenden, um die Bezeichnung dieser beiden Bereiche implizieren. Ich tat es, aber ich weiß nicht, warum mein Code nicht funktioniert.

Antwort

2

Sie sollten die Klassenbezeichnung für jede Instanz angeben. So verwenden:

group = [repmat('r',200,1); repmat('g',200,1)]; 
svmStruct = svmtrain(all_data, group, 'ShowPlot',true); 

svm