LibSVM を使用して、いくつかのマルチクラス分類を実行しています。LibSVM の MATLAB インターフェイスを使用してモデルをトレーニングしました。次に、このモデルを C で認識される形式で保存しました。C で svm_predict を使用して分類したいと考えています。MATLAB で見た結果を再現できずに困っています。実際、フィードするテスト ベクトル (ゼロのベクトルであっても) に関係なく、同じクラス出力が得られます。問題は、テスト ベクトル x を svm_node 構造にロードする方法にあると思います。以下はコードスニペットです。これが正しい方法なのか、何か不足している場合はお知らせください。
struct svm_model *libsvm_model = svm_load_model('mymodel.svm');
struct svm_node x[2001]; // this is for one feature vector of size 2000x1
int index = 1;
int i = 0;
for (i = 0; i < features.size(); i++) {
x[i].index = index;
x[i].value = features.at(i);
index = index + 1;
}
x[i+1].index = -1;
x[i+1].value = '?';
double result = svm_predict(libsvm_model, x);