我有一个令人讨厌的事实问题。我在matlab中使用libsvm,我可以使用进行预测
predicted_label = svmpredict(Ylabel, Xlabel, model);
但每次我做出预测时,都会出现这样的情况:
Accuracy = X% (y/n) (classification)
我觉得这很烦人,因为我重复了很多次这个过程,也因为它在屏幕上显示而使它变慢。
我想我想要的是避免svmprecdiction过于冗长。
有人能帮我吗?提前谢谢。
-Jessica
我发现一种比编辑c库的源代码更好的方法是使用matlabs-evalc,它将任何输出放在第一个输出参数中。
[~ predicted_label] = evalc('svmpredict(Ylabel, Xlabel, model)');
因为要评估的字符串是固定的,所以性能不应该降低。
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)
如果您使用的是matlab,只需找到显示此信息的代码行(通常使用'disp'、'sprintf'printf'),并使用注释运算符%对其进行注释。
示例:
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-使项目