我正在使用 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。
太感谢了!-维维克