我正在使用 svmtrain 来区分几对数据。尽管 svmtrain 在一种情况下按预期工作(输出一个分类器对象,其准确度为 svmclassify 验证的约 70%),但所有其他情况似乎都失败了。我的特征向量是 134 维,我为每个类使用了 300 到 800 个数据点。(每个类不一定具有相同数量的数据点)。我已经尝试使用该方法为 svmtrain 使用默认内核
SVM = svmtrain(double(train{k}), group_train{k},'showplot',true);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我收到错误:
无法解决优化问题:超过最大迭代次数;增加 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);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我收到错误:
无法解决优化问题:退出:解无界且无穷大;约束不够严格。
在确实有效的情况下,我有来自第一类的 338 个数据点和来自第二类的 476 个数据点。例如,在三个不起作用的情况下,我在第二个类中有 828、573 和 333 个数据点,而第一个类保持不变,有 338 个数据点。两种方法调用似乎都不起作用。
请你帮助我好吗?我一直试图解决这个问题一个星期,但没有运气。我在具有 1 GHz 处理器和 2 GB RAM 的虚拟机 Windows XP 上使用 MATLAB 7.9.0 R2009B。
非常感谢!-维维克
让它像这样:
options = optimset('maxiter',1000);
svmtrain(TotalResult,YResultsTotal,'Kernel_Function','mlp','Method','QP',...
'quadprog_opts',options);
Run Code Online (Sandbox Code Playgroud)