c - matlab 与 C 版本中的 svmtrain 函数执行时间

标签 c matlab machine-learning svm libsvm

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

以下是两者的代码: MATLAB:

t1=cputime; 模型= svmtrain(标签,数据,'-h 0 -s 0 -c 0.025 -n 0.01 -b 1 -t 0 -d 1 -p 0.001'); t2=CPU时间; fprintf('耗时=%.3f\n',t2-t1)

和 C 代码:

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

最佳答案

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

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

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

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

关于c - matlab 与 C 版本中的 svmtrain 函数执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39874327/

相关文章:

C 结构体和指针

c - 简单的ubuntu内核模块make文件错误

Matlab imshow 一个灰度矩阵

machine-learning - BERT多类别情感分析准确率低?

c - 一旦五个偶数放入数组中,程序将停止

c - 是否可以在不搜索 malloc 语句的情况下找到分配给指针的内存

optimization - 如何在 MATLAB 中使用查找表

matlab - 如何使用 MATLAB 计算二值图像中白色像素的数量?

python - 对 < 200 个样本的小数据集进行二元分类

python - 如何实现多类语义分割?