我正在使用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。非常感谢你! -Vivek
答案 0 :(得分:4)
像这样:
options = optimset('maxiter',1000);
svmtrain(TotalResult,YResultsTotal,'Kernel_Function','mlp','Method','QP',...
'quadprog_opts',options);