0

为了更好地理解支持向量机在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

你什么错误,在哪里?请将此添加到您的问题。 – Dan

+0

谢谢你的回答!购买方式,我在最后更新了我的答案:) – Christina

回答

2

你是否试图用两个班来实施分类训练?您的label = [ones(size(C2res{1},2),1)];只包含一个值,并且似乎预计有两个值(如两个类别)。我认为这就是错误出现的原因。

如果您申请一个类SVM,尝试添加这样的选择(见this page更多参考的选项):

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

因为我的数据集(培训和测试图像)都是人脸图像。所以我认为我只有一个标签和一个班级。我知道你对HMAX有很好的想法,以及如何使用C2功能:)这就是为什么我非常有兴趣得到你的帮助:) :) – Christina

+0

@Christina你期待什么输出?我想你想让你的分类器判断一个给定的数据集是否是正面的,我是否正确?如果是这种情况,则需要使用标签1来表示脸部,使用-1来表示非脸部。而且你的训练集也应该包含那些非脸部数据 – lennon310

+0

不,实际上,我所有的图像都是脸部。但其中一些被用作训练图像,其他被用作测试。请我需要你的意见:) – Christina

相关问题