Matlab libsvm svmpredict准确性详细

时间:2013-08-21 07:07:26

标签: matlab libsvm verbose

我有一个恼人的事实问题。我正在使用libsvm和matlab,我能够预测使用:

predicted_label = svmpredict(Ylabel, Xlabel, model);

但是每当我做出预测时都会出现这样的情况:

Accuracy = X% (y/n) (classification)

我发现这很烦人,因为我很多次重复这个过程,并且因为它在屏幕上显示而使它变慢。

我认为我想要的是避免svmpredict冗长。

任何人都可以帮我吗?提前谢谢。

-Jessica

3 个答案:

答案 0 :(得分:7)

我发现比编辑c库的源代码更好的方法是使用matlabs evalc将任何输出放到第一个输出参数。

[~ predicted_label] = evalc('svmpredict(Ylabel, Xlabel, model)');

因为要评估的字符串是固定的,所以不应该降低性能。

答案 1 :(得分:6)

svmpredict(Ylabel, Xlabel, model, '-q');

从手册:

Usage: [predicted_label, accuracy, decision_values/prob_estimates] = svmpredict(testing_label_vector, testing_instance_matrix, model, 'libsvm_options')
       [predicted_label] = svmpredict(testing_label_vector, testing_instance_matrix, model, 'libsvm_options')
Parameters:
  model: SVM model structure from svmtrain.
  libsvm_options:
    -b probability_estimates: whether to predict probability estimates, 0 or 1 (default 0); one-class SVM not supported yet
    -q : quiet mode (no outputs)

答案 2 :(得分:2)

如果您使用的是matlab,只需找到显示此信息的代码行(通常使用'disp''sprintf'' fprintf')并使用评论运算符对其进行评论。

示例:

disp(['Accuracy= ' num2str(x)]);

将其更改为:

% disp(['Accuracy= ' num2str(x)]);

如果您使用的是主libsvm库,那么您需要在制作之前对其进行修改。 1-打开文件'svmpredict.c'

2-找到这行代码:

info("Accuracy = %g%% (%d/%d) (classification)\n",
(double)correct/total*100,correct,total);

3-只需使用 // 运算符

对其进行评论

4-保存并关闭文件

5-制作项目