0

インスタンスの機能を変更するforループ内でSVMをトレーニングしており、最終的な目標値と反復をプロットしたいと思います。MatlabでLIBSVMを使用していますが、返されたモデルで最終的な目的の値が明示的に見つかりません。各相互作用で返されたモデルを使用して最終的な目標値を計算するにはどうすればよいですか?

svmtrainによって出力されたスクリプトを読み取ることは可能ですが、このトリックなしでこの値を計算したいと思います。

PD私はC++の基本的な知識を持っています。

4

1 に答える 1

1

svm.cppとsvm.hを変更して、数行のコードを追加して目的の値を返します。

1)svmmodel(svm.h)およびdecision_function(svm.cpp)構造体に新しいフィールドを追加します。

2)decision_functionの新しいフィールドにsi.objをコピーします。

3)decision_functionによるフィールドキャッチをsvmmodel構造の新しいフィールド(svm.cppのsvm_train関数)にコピーします。

4)svm_model_matlab.cを変更して、svmmodel構造の新しいフィールドを許可します。

  • NUMBER_OF_FIELD変数をインクリメントし、出力構造に新しいフィールドを追加します。
  • 出力構造体の順序に従って、関数model_to_matlab_structを変更します。(フィールドrhoに使用されるコードをコピーして、rhoを変数の名前に置き換えるのは簡単です)
  • matrix_matlab_to_model関数を変更します

それは本当に簡単で簡単です。

新しいファイルを渡すことができるのは、LIBSVM-ObjModificationという目的のメールのみを送信することです。

于 2012-06-14T00:28:17.793 に答える