我正在使用 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);