簡體   English   中英

Matlab libsvm svm預測精度詳細

[英]Matlab libsvm svmpredict accuracy verbose

我有一個令人討厭的事實的問題。 我將libsvm與matlab結合使用,並且能夠預測使用:

predicted_label = svmpredict(Ylabel, Xlabel, model);

但是,每次我做出預測時,都會出現以下情況:

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

我覺得很煩,因為我重復了很多次此過程,並且由於它在屏幕上顯示而使其速度變慢。

我想我想要的是避免svmpredict太冗長。

誰能幫我這個? 提前致謝。

-傑西卡

我發現比編輯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''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-做項目

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM