【问题标题】:LIBSVM assigning parameter cLIBSVM 分配参数 c
【发布时间】:2016-03-21 00:26:44
【问题描述】:

我正在尝试在 matlab 的 LIBSVM 中为 c 分配不同的值。代码行是

svmtrain(Ytrain, Xtrain, '-c C_vector(iter)')

针对不同的迭代和

C_vector=1:10:100

但这似乎不起作用并打印 Error: C <= 0

ps:我已经测试了svmtrain(Ytrain, Xtrain, '-c 1')svmtrain(Ytrain, Xtrain, '-c 11'),它们是C_vector的前两个值,它们完美地工作。 有什么想法有什么问题吗? 谢谢

【问题讨论】:

  • 请注意,svmtrain 已被机器学习工具箱中的 templateSVMfitcecocpredict 弃用

标签: matlab libsvm


【解决方案1】:

svmtrain 不能 eval 你的下标。改为使用:

 svmtrain(Ytrain, Xtrain, sprintf('-c %d', C_vector(iter)));

这将在选项字符串中写入下标表达式的值。

【讨论】:

  • @SarahESL 如果是,请选择正确答案。
  • 只是另一个问题,我在那个引用中也有其他字符串:svmtrain(Ytrain, Xtrain, '-t 2 -g lambda_hat(j)/gamma -c C_vector(i)'),但只是遇到了-c 的问题(例如svmtrain(Ytrain, Xtrain, '-t 2 -g lambda_hat(j)/gamma -c 1') 没有错误)...你能告诉我吗为什么?谢谢
  • @SarahESL 实际上你只是相信它有效,但它没有。 svmtrain() 是一个 MEX 函数,它使用 atof() 函数将参数从 ASCII 转换为浮点数。此函数来自标准 C 库,因此它忽略了 MATLAB 语法,因此-g lambda_hat(j)/gamma 不会被自动解释为有效浮点数。 atof 的行为是在不理解输入时返回 0.0。这可能是-g 选项的有效值,但不是-c 的有效值。这就是它没有引发任何错误的原因。
猜你喜欢
  • 2013-12-05
  • 2014-06-29
  • 2015-04-02
  • 2012-12-03
  • 2016-09-23
  • 2011-02-15
  • 2016-02-20
  • 1970-01-01
  • 2012-02-19
相关资源
最近更新 更多