【问题标题】:Using SVM to train my Dataset使用 SVM 训练我的数据集
【发布时间】:2014-02-21 03:24:53
【问题描述】:

为了更好地理解支持向量机在 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},但具有不同的值... p>

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

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'.

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

任何帮助将不胜感激!

【问题讨论】:

  • 你得到什么错误,在哪里?请将此添加到您的问题中。
  • 感谢您的回答!购买方式,我在最后更新了我的答案:)
  • @Dan 你能帮我吗?非常感谢stackoverflow.com/questions/65449934/…

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


【解决方案1】:

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

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

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

【讨论】:

  • 因为我的数据集(训练和测试图像)都是人脸图像。所以我认为我只有一个标签和一个类。我知道您对 HMAX 以及如何使用 C2 功能有很好的想法 :) 这就是为什么我非常有兴趣获得您的帮助 :):)
  • @Christina 你期待什么输出?我想你想让你的分类器判断给定的数据集是否是人脸,对吗?如果是这种情况,您需要使用标签 1 表示人脸,-1 表示非人脸。你的训练集也应该包含那些非人脸数据
  • 不,事实上,我所有的图像都是面孔。但其中一些用作训练图像,另一些用作测试。请我需要你的意见:)
  • 不幸的是我得到了这个错误:Error using svmtrain (line 291) Wrong number of arguments.
  • 没有必要。这取决于你的问题。有关一类 svm 应用程序,请参阅此页面:rvlasveld.github.io/blog/2013/07/12/…
猜你喜欢
  • 2015-08-14
  • 2014-05-18
  • 2015-05-04
  • 2019-07-12
  • 2012-02-21
  • 1970-01-01
  • 2019-01-31
  • 2015-09-26
  • 2013-12-16
相关资源
最近更新 更多