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 № 1Z 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);