LIBSVM精度每次都换同样的方法吗?

时间:2014-05-18 16:30:21

标签: matlab classification libsvm

我正在使用LIBSVM进行分类。 我已经提取了SIFT功能,然后我训练了我的功能的OVRTRAIN和OVRPREDICT。

在此之前,我使用此代码进行了交叉验证:

  bestcv = 0;
  for log2c = -1:1:3,
  for log2g = -4:1:2,
   cmd = ['-q -c ', num2str(2^log2c), ' -g ', num2str(2^log2g)];
   cv = get_cv_ac(label_Train_sift, Feat_Train, cmd, 3);
   if (cv >= bestcv),
    bestcv = cv; bestc = 2^log2c; bestg = 2^log2g;
    end
   fprintf('%g %g %g (best c=%g, g=%g, rate=%g)\n', log2c, log2g, cv, bestc, bestg,   
   bestcv);
   end 
   end

培训(获得模型和准确性):

 bestParam = ['-t 0 -c ', num2str(bestc), ' -g ', num2str(bestg)];
 model = ovrtrain(label_Train_sift, Feat_Train, bestParam);
 [predict_label, accuracy, prob_values] = ovrpredict(label_Test_sift, Feat_Test, model);

但是我必须训练许多不同的功能和参数。例如,对于第一次训练,我使用SIFT和Hesian方法然后使用DoG方法等等。

当我已经尝试了所有这种方法时,例如我将HESIAN作为最佳方法(在其他方法中提供了良好的准确性),但是当我再次使用Hessian方法训练相同的特征时(随时更改)...准确性变得不同......

怎么可能?

是否因为交叉验证? 但是当我第四次尝试时,我的准确度相同,但第二和第三次不同......

第1次训练,准确度67 2,准确度55 3,准确度45 ???

为什么?

0 个答案:

没有答案