matlab vs C版本中的svmtrain函数执行时间

Posted

技术标签:

【中文标题】matlab vs C版本中的svmtrain函数执行时间【英文标题】:svmtrain function execution time in matlab vs C version 【发布时间】:2017-02-13 22:04:36 【问题描述】:

我正在使用 libSVM,matlab 中的 svmtrain 函数比 C 花费更少的时间。虽然 C - 通常 - 比 matlab 快得多。两个分类器采用相同的参数,并以相同的迭代次数返回相同数量的 SVM。

以下是两者的代码: MATLAB:

t1=cputime; model = svmtrain(Labels,data, '-h 0 -s 0 -c 0.025 -n 0.01 -b 1 -t 0 -d 1 -p 0.001'); t2=cputime; fprintf('Elapsed time=%.3f\n',t2-t1)

AND C 代码:

    clock_t begin = clock();
    model = svm_train(&prob,&param);    
    clock_t end = clock();;
    double time_spent = (double)(end - begin) / double(CLOCKS_PER_SEC);

【问题讨论】:

" 虽然 C - 一般而言 - 比 matlab 快得多" 不一定 ***.com/questions/20513071/… 做更多的运行/基准测试。 【参考方案1】:

当您使用选项-b 1 来获得概率时:

libsvm 将使用Platt scaling 来获得这些概率,使用cross-validation 交叉验证总是随机地分割数据 C 内,the default seed of 1 will be used 也许 Matlab 界面将使用基于时间(或任何其他)的种子 作为第一步,我会将 Matlabs 全局种子设置为 1,并对 C 执行相同操作;然后再次测量

正如我的评论中所指出的,做更多的测试是明智的。即使种子不同(一种可能性),许多次运行的平均值也应该是相同的使用相同的代码

另请参阅this question,其中列出了不同行为的其他一些可能性(您说您获得了相同数量的 SV;但可能内部行为不同)

【讨论】:

以上是关于matlab vs C版本中的svmtrain函数执行时间的主要内容,如果未能解决你的问题,请参考以下文章

[MATLAB][原创]Matlab添加libsvm后报错svmtrain已被删除, 请改用fitcsvm解决办法

svmtrain - 指定错误分类的成本

Matlab中两个同名函数

支持向量机的matlab代码

MATLAB 的 svmtrain :保存支持向量索引而不是支持向量本身

求基于matlab的EMD代码,急!