0

厄介な事実について質問があります。私は matlab で libsvm を使用しており、以下を使用して予測できます。

predicted_label = svmpredict(Ylabel, Xlabel, model);

しかし、予測を行うたびに次のように表示されることがあります。

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

この手順を何度も繰り返しているため、面倒です。また、画面に表示されるため、処理が遅くなります。

私が望むのは、その svmpredict が冗長になるのを避けることだと思います。

誰でもこれで私を助けることができますか?前もって感謝します。

-ジェシカ

4

3 に答える 3

7

c ライブラリのソース コードを編集するよりもはるかに優れたアプローチは、出力を最初の出力引数に配置する matlabs evalcを使用することであることがわかりました。

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

評価する文字列が固定されているため、パフォーマンスが低下することはありません。

于 2013-08-21T10:06:48.220 に答える
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)
于 2013-11-18T21:49:15.277 に答える
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- プロジェクトを作成する

于 2013-08-21T07:43:05.933 に答える