在matlab中使用LIBSVM的特征向量.mat文件

时间:2013-12-06 14:13:27

标签: matlab machine-learning svm libsvm

我是matlab和LIBSVM的新手。我计算了每个点的特征向量,说明了单个向量中点的r,g,b值,并将其存储在.mat文件中。目前我有大约420分和4个班级,红色/绿色/蓝色/其他。现在我想传递这个.mat文件来训练libsvm并根据它对新到达的测试点进行分类,无论是红色还是蓝色还是绿色或其他。不用说,它是一个多类分类,我甚至不知道如何处理它? svmtrain(TrainingSet,Groups,'kernel_function','rbf');其中TrainingSet是我的420*4要素向量集,Groups是类名。 在此先感谢您的帮助。

1 个答案:

答案 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);