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)将si.obj复制到decision_function的新字段中。

3) 将decision_function 的字段catch 复制到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 回答