【问题标题】:svmtrain function execution time in matlab vs C versionmatlab vs C版本中的svmtrain函数执行时间
【发布时间】: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 machine-learning svm libsvm


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2012-11-28
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多