[英]Probability estimate for multi class classification in libsvm for matlab
[英]Using LIBSVM in MatLab for Multi Class image classification
我在MatLab中使用LIBSVM来尝试对图像进行分类。
我知道SVM是一个二进制分类模型,但是我想知道如何将它用作多类分类模型。
是否可以训练成对的数据(即汽车和非汽车,马和非马,人和非人),然后通过将图像与所有三个模型进行比较来预测图像所属的类别? 如果是这样,我怎么能实现这个目标? 我的测试标签矢量是什么?
是的,你的建议是一个很好的方法。 它被称为一对一战略 。
您需要为每个班级训练单独的SVM。 如果在该类中,则输出数据将是等于1的二进制变量,否则为0。 然后,为了对新项目进行分类,请在每个SVM中运行它,并选择输出最高的项目(输出最接近1)。
作为@ Dan的补充答案,以下是我之前帖子中的相关代码:
model = cell(NumofClass,1); % NumofClass = 3 in your case
for k = 1:NumofClass
model{k} = svmtrain(double(trainingLabel==k), trainingData, '-c 1 -g 0.2 -b 1');
end
%% calculate the probability of different labels
pr = zeros(1,NumofClass);
for k = 1:NumofClass
[~,~,p] = svmpredict(double(testLabel==k), testData, model{k}, '-b 1');
pr(:,k) = p(:,model{k}.Label==1); %# probability of class==k
end
%% your label prediction will be the one with highest probability:
[~,predctedLabel] = max(pr,[],2);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.