使用SVM训练我的数据集

时间:2014-01-29 11:04:08

标签: matlab image-processing computer-vision svm face-recognition

为了更好地理解支持向量机如何在MATLAB中工作的概念,我建议你简要阅读THIS VERY IMPORTANT LINK

我正在尝试应用相同的概念,但我有不同的训练集和测试集。

更精确:

我的列车指的是 C2res {1} ,其中最后一个等于:

 C2res{1} =

           1.0e-05 *

          Columns 1 through 10

            0.5341    0.5822    0.6185    0.7555    0.7369    0.7131    0.5985    0.6483    0.5668    0.6620

          Columns 11 through 12

            0.6523    0.6097  

我的测试集指的是 C2res {2} ,其中最后一个具有相同形式的C2res {1},但值不同......

然后,我使用了上述链接中使用的概念:

XTrain = [C2res{1}];
XTest = [C2res{2}];
label = [ones(size(C2res{1},2),1)];
SVMStruct = svmtrain(XTrain , label, 'kernel_function', 'linear');
Group       = svmclassify(SVMStruct, XTest);

但遗憾的是我总是遇到如下错误:

Error using svmtrain (line 335)
Y must contain exactly two groups for method 'SMO'.

这就是为什么我需要你的帮助。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

您是否尝试使用两个类来实施分类培训?您的label = [ones(size(C2res{1},2),1)];只包含一个值,而且似乎需要两个值(两个类别)。我认为这就是出错的原因。

如果您要应用单类SVM,请尝试添加此选项(有关该选项的更多参考,请参阅this page):

SVMStruct = svmtrain(XTrain , label,'-t 0 -s 2');