/ / MAT-Datei mit Feature-Vektoren für LIBSVM in Matlab verwenden - Matlab, Machine Learning, SVM, Libsvm

Verwenden von Feature-Vektor-.mat-Datei für LIBSVM in Matlab - Matlab, maschinelles Lernen, Svm, libsvm

Ich bin neu in Matlab und auch in LIBSVM. Ich habe den Merkmalsvektor für jeden Punkt berechnet, der die Werte von r, g, b in Einzelvektor angibt, und ihn in gespeichert .mat Datei. Derzeit habe ich etwa 420 Punkte und 4 Klassen, nämlich Rot / Grün / Blau / Andere. Nun möchte ich diese .mat-Datei zum Trainieren von libsvm übergeben und danach den neu ankommenden Testpunkt klassifizieren, ob er rot oder blau ist oder grün oder anderes. Nicht zu erwähnen, es ist eine Multiklassen-Klassifizierung, und ich weiß gar nicht, wie ich damit umgehen soll. svmtrain(TrainingSet,Groups,"kernel_function","rbf"); woher TrainingSet ist mein 420*4 Funktionsvektorsatz und Groups ist Klassenname. Vielen Dank im Voraus für die Hilfe.

Antworten:

0 für die Antwort № 1

Sie können One-vs-All-Ansatz mit libsvm ausprobieren.

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

Berechnen Sie dann in Ihrem Testprozess einfach die Wahrscheinlichkeit für verschiedene Labels:

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

und Ihre Etikettenvorhersage ist die mit der höchsten Wahrscheinlichkeit:

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