我是matlab和LIBSVM的新手。我计算了每个点的特征向量,说明了单个向量中点的r,g,b值,并将其存储在.mat
文件中。目前我有大约420分和4个班级,红色/绿色/蓝色/其他。现在我想传递这个.mat文件来训练libsvm并根据它对新到达的测试点进行分类,无论是红色还是蓝色还是绿色或其他。不用说,它是一个多类分类,我甚至不知道如何处理它?
svmtrain(TrainingSet,Groups,'kernel_function','rbf');
其中TrainingSet
是我的420*4
要素向量集,Groups
是类名。
在此先感谢您的帮助。
答案 0 :(得分:0)
您可以尝试使用libsvm进行一对一的方法。
model = cell(4,1);
for k=1:4
model{k} = svmtrain(double(TrainingSet==k), Groups, '-c 1 -g 0.2 -b 1');
end
然后在您的测试过程中,只计算不同标签的概率:
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
并且您的标签预测将是概率最高的那个:
[~,predctedLabel] = max(pr,[],2);