3

我正在使用 svmtrain 来区分几对数据。尽管 svmtrain 在一种情况下可以正常工作(输出一个由 svmclassify 验证的准确率约为 70% 的分类器对象),但所有其他情况似乎都失败了。我的特征向量是 134 维,每个类使用 300 到 800 个数据点。(每个类不一定有相同数量的数据点)。我尝试使用 svmtrain 的默认内核使用该方法

SVM = svmtrain(double(train{k}), group_train{k},'showplot',true);

在这种情况下,我收到错误:

无法解决优化问题:超过最大迭代次数;增加options.MaxIter。要继续以当前解决方案为起点解决问题,请在调用 quadprog 之前设置 x0 = x。

我还尝试过扩展迭代次数并使用调用指定内核:

options = optimset('maxiter',1000,'largescale','on');
SVM = svmtrain(double(train{k}),group_train{k},'Kernel_Function','mlp','Method','QP',...
   'quadprog_opts',options);

在这种情况下,我收到错误:

无法求解优化问题:退出:解无界且无穷大;约束不够严格。

在确实有效的情况下,我有来自第一类的 338 个数据点和来自第二类的 476 个数据点。例如,在三个不起作用的情况下,第二类有 828、573 和 333 个数据点,而第一类保持不变,有 338 个数据点。两种方法调用似乎都不起作用。

请你帮助我好吗?我一直试图解决这个问题一个星期,但没有运气。我在具有 1 GHz 处理器和 2 GB RAM 的虚拟机 Windows XP 上使用 MATLAB 7.9.0 R2009B。

太感谢了!-维维克

4

1 回答 1

5

让它像这样:

options = optimset('maxiter',1000);
svmtrain(TotalResult,YResultsTotal,'Kernel_Function','mlp','Method','QP',...
            'quadprog_opts',options);
于 2011-09-08T21:25:34.157 回答