/ / Korzystanie z wektora opcji .mat dla LIBSVM w matlab - matlab, machine-learning, svm, libsvm

Użycie pliku wektorowego funkcji dla pliku LIBSVM w programie matlab - matlab, machine-learning, svm, libsvm

I "m new do matlab jak również LIBSVM. Obliczyłem wektor cech dla każdego punktu, podając wartości r, g, b punktu w pojedynczym wektorze i zapisując go w .mat plik. Obecnie mam około 420 punktów i 4 klasy, w tym czerwony / zielony / niebieski / inny. Teraz chcę przekazać ten plik .mat do szkolenia libsvm i na tej podstawie sklasyfikować nowo przybyły punkt testowy, czy jest czerwony czy niebieski lub zielony czy inny Nie trzeba wspominać, że jest to klasyfikacja wieloklasowa i nawet nie wiem, jak sobie z tym poradzić? svmtrain(TrainingSet,Groups,"kernel_function","rbf"); gdzie TrainingSet jest mój 420*4 zestaw wektorów cech i Groups to nazwa klasy. Z góry dziękuję za pomoc.

Odpowiedzi:

0 dla odpowiedzi № 1

Z libsvm możesz wypróbować podejście „wszystko przeciwko wszystkim”.

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

Następnie w procesie testowym wystarczy obliczyć prawdopodobieństwo różnych etykiet:

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

a Twoje przewidywanie etykiet będzie takie, które ma największe prawdopodobieństwo:

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