【问题标题】:Compute objective value LIBSVM Matlab计算目标值 LIBSVM Matlab
【发布时间】:2012-05-24 12:32:25
【问题描述】:

我正在 for 循环中训练一个 SVM,以更改我的实例的功能,我想绘制最终目标值与迭代的关系。我在 Matlab 中使用 LIBSVM,但在返回的模型中没有明确找到最终目标值。 如何在每次交互中使用返回的模型计算最终目标值?

可以读取 svmtrain 打印的脚本,但我想在没有这个技巧的情况下计算这个值。

P.D.我有 C++ 的基本知识。

【问题讨论】:

  • 你在使用 C-SVM 吗?如果是这样,请参阅此常见问题解答csie.ntu.edu.tw/~cjlin/libsvm/faq.html#f401。如果没有,您能否包括您用于训练的函数的名称和训练的输出(如果有)?
  • 是的,我在 Matlab 中使用带有函数“svmtrain”的 C-SVM。这将返回一个带有参数的模型结构:“nr_class”、“totalSV”、“rho”、“Label”、“ProbA”、“ProbB”、“nSV”、“sv_coef”、“SVs”

标签: matlab libsvm


【解决方案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

【讨论】:

  • 两个人请求了我没有提供的这个模组,因为它有点棘手,而且我没有对它进行广泛的测试。如果有人有 libsvm 的分支,我可以将更改发送给您。另一方面,您可以在simpleMKL中使用Varma提出的mod,既实用又简单。
猜你喜欢
  • 2015-12-01
  • 2014-04-28
  • 2016-05-27
  • 2012-06-14
  • 1970-01-01
  • 2014-12-08
  • 2011-02-03
  • 2020-11-12
  • 2013-10-21
相关资源
最近更新 更多